前言:本来想这次就把地图导入还有输出就直接做掉的,但是自己起床晚了,后来想想反正JMenu还没说呢,索性就这次添加一个中间的项目,把JMenu加上,不过也没多少内容。上一篇里说道我们要研究下这个地图存储的格式问题的。其实个人感觉考虑哈夫曼(Huffman)树是最好的解决方案,但是对于没有学过《数据结构》的人来说单单这个问题要讲透搞懂就要好久 时间,而且还要专门写关于Huffman的类,而且自己也有点懒惰,嘿嘿。所以这里就用一个简单的方法来说明。这次加图片说明,嘿嘿(做了很烂望包含),好了,说了这么多,看思路吧

其实一个地图编辑器少不了的就是些添加修改地图的功能,当然最好不要都直接做到按钮去,这样整个程序界面估计会给JButton给占据掉的,所以一个菜单还是必不可少的。这次就讲讲JMenuBar,JMenu和它的Item:JMenuItem。

JMenu,从字面意思就直到是菜单控件,以前做MFC的肯定知道ToolBar,也就是工具栏咯,那么这里的JMenuBar就是菜单栏了,而JMenu是其中的菜单项,而JMenuItem是点击JMenu后的下拉菜单项,那么到底是什么效果呢?

Java制作高德地图GIS java地图编辑器_Java制作高德地图GIS

 

看到了吧,这个就是整个菜单栏,“文件”和“编辑”这两个是JMenu控检,而“载入地图”和“退出”是JMenuItem控件,而有JMenu所在的整个横条就是JMenuBar了,呵呵。

JMenuItem也有其addActionListener的注册方法,而且在响应函数中和JButton的做法和效果是一致的,所以可以看到退出其实可以和下面的OK的JButton响应为同一个System.exit(0)。

下面讲讲具体的添加方法。首先定义一个JMenu,一个JMenuItem,一个JMenuBar,这样是最简陋的,调用JMenu的add方法,把这个JMenuItem加进去,然后再调用JMenuBar的add方法把这个JMenu加进去,最后调用JFrame的setMenuBar(JMenuBar的实例)就可以了。代码最后公布。

现在讲讲地图的问题。我是用Jcreatro Pro做的,而且建立了一个工程,其实没关系的,你用记事本也一样,大不了全编译过来然后对总的class文件进行运行就行了,没什么本质区别。所以下面我的代码是分蛮多java文件的,但是只要你放在同一个文件夹下就没什么问题。

首先讲下下我自己的思路吧,有建议的朋友快M我,不然我就真的照着这个自己的思路发展下去了咯。因为考虑到地形一般不会多于50个,所以用字母就可以表示52个地形,那地图文件里面就都是些字母了,呵呵。(其实这个是手工写地图要考虑的问题,用地图编辑器就不需要知道到底地图文件是怎么表示的)为此我们需要一个放地图图片的数组,还有一个记录地图信息的数据结构。本着OO的思想,我为他们分别做了两个类,一个叫LandStylePic,一个叫MapsConstruction。

先说说MapsConstruction类。它有四个成员变量:


private   int  index;         //  在LandStyle中的地图样式
private   char  mapsMark;         //  存储或者读取时所表示的字符
private  String landStyleName;     //  地形的名字
private  String info;                          //  对此地形的描述信息


还有四个方法,分别取得这四个属性:getIndex(),getName(),getInfo(),getMark()。

注意:其实这个(MapsConstruction)可以作为LandStylePic的内部类,本来就是给LandStylePic定义的数据结构。不过为了代码的测试性,我还是分开了他们。

下面给出MapsConstruction的代码:




Java制作高德地图GIS java地图编辑器_java_02

Java制作高德地图GIS java地图编辑器_框架_03

/** */

/**

Java制作高德地图GIS java地图编辑器_框架_04

 * 一个地形存储识别的类

Java制作高德地图GIS java地图编辑器_java_05

 **/


Java制作高德地图GIS java地图编辑器_框架_06


Java制作高德地图GIS java地图编辑器_java_02

Java制作高德地图GIS java地图编辑器_框架_03


public   class  MapsConstruction  ... {

Java制作高德地图GIS java地图编辑器_框架_04

    private int index;                // 在LandStyle中的地图样式

Java制作高德地图GIS java地图编辑器_框架_04

    private char mapsMark;            // 存储或者读取时所表示的字符

Java制作高德地图GIS java地图编辑器_框架_04

    private String landStyleName;    // 地形的名字

Java制作高德地图GIS java地图编辑器_框架_04

    private String info;    // 对此地形的描述信息

Java制作高德地图GIS java地图编辑器_框架_04

    

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * Method main

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @param args

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_java_21

     */

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public static void main(String[] args) ...{

Java制作高德地图GIS java地图编辑器_框架_04

        // TODO: 在这添加你的代码

Java制作高德地图GIS java地图编辑器_java_21

    }

Java制作高德地图GIS java地图编辑器_框架_04


Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * Method MapsConstruction

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @param index, mapsMark, name, info

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_java_21

     */

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public MapsConstruction(int index, char mapsMark, String name, String info) ...{

Java制作高德地图GIS java地图编辑器_框架_04

        // TODO: 在这添加你的代码

Java制作高德地图GIS java地图编辑器_框架_04

        this.index = index;

Java制作高德地图GIS java地图编辑器_框架_04

        this.mapsMark = mapsMark;

Java制作高德地图GIS java地图编辑器_框架_04

        this.landStyleName = name;

Java制作高德地图GIS java地图编辑器_框架_04

        this.info = info;

Java制作高德地图GIS java地图编辑器_java_21

    }

Java制作高德地图GIS java地图编辑器_框架_04


Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * Method getIndex

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @return

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_java_21

     */

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public int getIndex() ...{

Java制作高德地图GIS java地图编辑器_框架_04

        // TODO: 在这添加你的代码

Java制作高德地图GIS java地图编辑器_框架_04

        return index;

Java制作高德地图GIS java地图编辑器_java_21

    }

Java制作高德地图GIS java地图编辑器_框架_04


Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * Method getMarks

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @return

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_java_21

     */

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public char getMarks() ...{

Java制作高德地图GIS java地图编辑器_框架_04

        // TODO: 在这添加你的代码

Java制作高德地图GIS java地图编辑器_框架_04

        return mapsMark;

Java制作高德地图GIS java地图编辑器_java_21

    }

Java制作高德地图GIS java地图编辑器_框架_04


Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * Method getName

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @return

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_java_21

     */

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public String getName() ...{

Java制作高德地图GIS java地图编辑器_框架_04

        // TODO: 在这添加你的代码

Java制作高德地图GIS java地图编辑器_框架_04

        return this.landStyleName;

Java制作高德地图GIS java地图编辑器_java_21

    }    

Java制作高德地图GIS java地图编辑器_框架_04

    

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

        /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * Method getInfo

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @return

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_java_21

     */

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public String getInfo() ...{

Java制作高德地图GIS java地图编辑器_框架_04

        // TODO: 在这添加你的代码

Java制作高德地图GIS java地图编辑器_框架_04

        return this.info;

Java制作高德地图GIS java地图编辑器_java_21

    }    

Java制作高德地图GIS java地图编辑器_java_05

}


Java制作高德地图GIS java地图编辑器_框架_06


 

LandStylePic中有一个静态的ImageIcon数组,负责存储外部的地图文件。其中有专门负责存储相应的地图信息的MapsConstruction数组,以及两个getIndex的查询方法(考虑到数组不会太大,所以就逐个比较吧),分别对应对地图名字和地图的表示符号的查询返回对应的ImageIcon,前者在手动编辑地图时用到,后者则在读入地图文件以及输出地图文件时极为有用!给出代码



Java制作高德地图GIS java地图编辑器_java_02

Java制作高德地图GIS java地图编辑器_框架_03

/** */ /**

Java制作高德地图GIS java地图编辑器_框架_04

 * 记录地图类型存储的类

Java制作高德地图GIS java地图编辑器_框架_04

 *

Java制作高德地图GIS java地图编辑器_java_05

 **/

Java制作高德地图GIS java地图编辑器_框架_06

import

 javax.swing.ImageIcon;

Java制作高德地图GIS java地图编辑器_框架_06

import

 java.util. * ;

Java制作高德地图GIS java地图编辑器_框架_06


Java制作高德地图GIS java地图编辑器_java_02

Java制作高德地图GIS java地图编辑器_框架_03

public

  final   class  LandStylePic  ... {

Java制作高德地图GIS java地图编辑器_框架_04

    // 存放地形图形的数组

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public final static ImageIcon[] LANDSTYLES = ...{

Java制作高德地图GIS java地图编辑器_框架_04

        new ImageIcon("../mapResource/water/water_left.PNG"),

Java制作高德地图GIS java地图编辑器_框架_04

        new ImageIcon("../mapResource/water/water_middle.PNG"),

Java制作高德地图GIS java地图编辑器_框架_04

        new ImageIcon("../mapResource/water/water_right.PNG"),

Java制作高德地图GIS java地图编辑器_框架_04

        new ImageIcon("../mapResource/water/water_blue.PNG"),

Java制作高德地图GIS java地图编辑器_java_21

    };

Java制作高德地图GIS java地图编辑器_框架_04

    

Java制作高德地图GIS java地图编辑器_框架_04

    // 存放地形相关信息的数据结构的数组

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public final static MapsConstruction[] MAPCONS = ...{

Java制作高德地图GIS java地图编辑器_框架_04

        new MapsConstruction(0, 'A', "water_left", 

Java制作高德地图GIS java地图编辑器_框架_04

                "水地形的左边部分,两栖物种以及飞行物种可登陆"),

Java制作高德地图GIS java地图编辑器_框架_04

        new MapsConstruction(1, 'B', "water_middle",

Java制作高德地图GIS java地图编辑器_框架_04

                "水地形的中间部分,两栖物种以及飞行物种可登陆"),

Java制作高德地图GIS java地图编辑器_框架_04

        new MapsConstruction(2, 'C', "water_right",

Java制作高德地图GIS java地图编辑器_框架_04

                "水地形的右边部分,两栖物种以及飞行物种可登陆"),

Java制作高德地图GIS java地图编辑器_框架_04

        new MapsConstruction(3, 'D', "water_blue",

Java制作高德地图GIS java地图编辑器_框架_04

                "水地形的反光部分,两栖物种以及飞行物种可登陆"),

Java制作高德地图GIS java地图编辑器_java_21

    };

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * Method main

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @param args

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_java_21

     */

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public static void main(String[] args) ...{

Java制作高德地图GIS java地图编辑器_框架_04

        // TODO: 在这添加你的代码

Java制作高德地图GIS java地图编辑器_java_21

    }

Java制作高德地图GIS java地图编辑器_框架_04


Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * Method getIndex

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @param name

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @return

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_java_21

     */

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public static int getIndex(String name) ...{

Java制作高德地图GIS java地图编辑器_框架_04

        // TODO: 在这添加你的代码

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

        for(int i = 0; i < MAPCONS.length; i++) ...{

Java制作高德地图GIS java地图编辑器_框架_04

            if( name.equals( MAPCONS[i].getName() ) )

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

            ...{

Java制作高德地图GIS java地图编辑器_框架_04

                return MAPCONS[i].getIndex();

Java制作高德地图GIS java地图编辑器_java_21

            }

Java制作高德地图GIS java地图编辑器_java_21

        }

Java制作高德地图GIS java地图编辑器_框架_04

        return -1;

Java制作高德地图GIS java地图编辑器_java_21

    }

Java制作高德地图GIS java地图编辑器_框架_04


Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * Method getIndex

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @param mark

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @return

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_java_21

     */

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public static int getIndex(char mark) ...{

Java制作高德地图GIS java地图编辑器_框架_04

        // TODO: 在这添加你的代码

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

        for(int i = 0; i < MAPCONS.length; i++) ...{

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

            if ( mark == MAPCONS[i].getMarks() ) ...{

Java制作高德地图GIS java地图编辑器_框架_04

                return MAPCONS[i].getIndex();

Java制作高德地图GIS java地图编辑器_java_21

            }

Java制作高德地图GIS java地图编辑器_java_21

        }

Java制作高德地图GIS java地图编辑器_框架_04

        return -1;

Java制作高德地图GIS java地图编辑器_java_21

    }    

Java制作高德地图GIS java地图编辑器_java_05

}

Java制作高德地图GIS java地图编辑器_框架_06


注意到LANDSTYLES和MAPCON这两个数组是一一对应的,MAPCON的getIndex所得到的就是在LANDSTYLES中的索引。这个文件要自己手动添加。

好了,最后给出主程序的代码。分两个文件,一个是Frame,而另一个是调用这个Frame并且显示,完全可以放到一起来做的。里面的东西大家就自己分析分析看看,然后自己写一个出来,嘿嘿。很有意思的哟~

e.g. :



Java制作高德地图GIS java地图编辑器_框架_06

import  java.awt. *

;

Java制作高德地图GIS java地图编辑器_框架_06

import  java.awt.event.

* ;

Java制作高德地图GIS java地图编辑器_框架_06

import  javax.swing.

* ;

Java制作高德地图GIS java地图编辑器_框架_06

import  java.util.

* ;

Java制作高德地图GIS java地图编辑器_框架_06


Java制作高德地图GIS java地图编辑器_java_02

Java制作高德地图GIS java地图编辑器_框架_03

/** */ /**

Java制作高德地图GIS java地图编辑器_框架_04

 * Sample application using JFrame.

Java制作高德地图GIS java地图编辑器_框架_04

 *

Java制作高德地图GIS java地图编辑器_框架_04

 * @author SosoAyaen

Java制作高德地图GIS java地图编辑器_框架_04

 * @version 1.00 06/08/10

Java制作高德地图GIS java地图编辑器_java_05

 */

Java制作高德地图GIS java地图编辑器_java_02

Java制作高德地图GIS java地图编辑器_框架_03

public  

class  MapsEditorFrame  extends  JFrame  implements  ActionListener ... {

Java制作高德地图GIS java地图编辑器_框架_04

   

Java制作高德地图GIS java地图编辑器_框架_04

    // 容器组件等

Java制作高德地图GIS java地图编辑器_框架_04

    private JButton jbOK = null, jbCancel = null, jbIcon = null,

Java制作高德地图GIS java地图编辑器_框架_04

                    jbSave = null, jbLoadMapFromFile = null;

Java制作高德地图GIS java地图编辑器_框架_04

    private JPanel jpCenter = null, jpIcon = null, jpSouth = null,

Java制作高德地图GIS java地图编辑器_框架_04

                    jpNorth = null, jpEast = null, jpEastCo = null;

Java制作高德地图GIS java地图编辑器_框架_04

    private JLabel jlMap = null, jlTitle = null, jlTips = null;

Java制作高德地图GIS java地图编辑器_框架_04

    private JMenu jmenu = null;

Java制作高德地图GIS java地图编辑器_框架_04

    private JMenuItem jmiExit = null;

Java制作高德地图GIS java地图编辑器_框架_04

    private JMenuBar jmb = null;

Java制作高德地图GIS java地图编辑器_框架_04

    

Java制作高德地图GIS java地图编辑器_框架_04

    private JTextField jtf = null;

Java制作高德地图GIS java地图编辑器_框架_04

    private int change = 1;            // 控制点击同一按钮后控制不同控件

Java制作高德地图GIS java地图编辑器_框架_04

    

Java制作高德地图GIS java地图编辑器_框架_04

    // 临时测试用的地图文件数组

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    private char[] maps = ...{

Java制作高德地图GIS java地图编辑器_框架_04

        'A', 'B', 'C', 'A', 'A', 'A', 'D', 'D', 'B', 'D',

Java制作高德地图GIS java地图编辑器_java_21

    };

Java制作高德地图GIS java地图编辑器_框架_04

    

Java制作高德地图GIS java地图编辑器_框架_04

    // 随机数

Java制作高德地图GIS java地图编辑器_框架_04

    private Random rand = new Random();

Java制作高德地图GIS java地图编辑器_框架_04

    private final int WIDTH = 12, HEIGHT = 4;

Java制作高德地图GIS java地图编辑器_框架_04

    // private Dimension d = null;

Java制作高德地图GIS java地图编辑器_框架_04

    

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

     /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * The constructor.

Java制作高德地图GIS java地图编辑器_java_21

     */  

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public MapsEditorFrame (String title) ...{

Java制作高德地图GIS java地图编辑器_框架_04

        super(title);

Java制作高德地图GIS java地图编辑器_框架_04

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Java制作高德地图GIS java地图编辑器_框架_04

        // d = new Dimension(11, 20);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        // JMenu

Java制作高德地图GIS java地图编辑器_框架_04

        JMenu jmFile = new JMenu("文件");

Java制作高德地图GIS java地图编辑器_框架_04

        // 临时定义组件

Java制作高德地图GIS java地图编辑器_框架_04

        JMenuItem jmiLoad = new JMenuItem("载入地图");

Java制作高德地图GIS java地图编辑器_框架_04

        jmiLoad.addActionListener(this);

Java制作高德地图GIS java地图编辑器_框架_04

        jmFile.add(jmiLoad);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        jmiExit = new JMenuItem("退出");

Java制作高德地图GIS java地图编辑器_框架_04

        jmiExit.addActionListener(this);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        jmFile.add(jmiExit);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        JMenu jmEdit = new JMenu("编辑");

Java制作高德地图GIS java地图编辑器_框架_04

        JMenuItem jmiUndo = new JMenuItem("撤销");

Java制作高德地图GIS java地图编辑器_框架_04

        jmEdit.add(jmiUndo);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        // JMenuBar

Java制作高德地图GIS java地图编辑器_框架_04

        jmb = new JMenuBar();

Java制作高德地图GIS java地图编辑器_框架_04

        jmb.add(jmFile);

Java制作高德地图GIS java地图编辑器_框架_04

        jmb.add(jmEdit);

Java制作高德地图GIS java地图编辑器_框架_04

        this.setJMenuBar(jmb);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        // JTextField

Java制作高德地图GIS java地图编辑器_框架_04

        jtf = new JTextField(10);

Java制作高德地图GIS java地图编辑器_框架_04

        jtf.setEditable(false);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        // JLabel

Java制作高德地图GIS java地图编辑器_框架_04

        // jlMap = new JLabel(mapsWater[0]);

Java制作高德地图GIS java地图编辑器_框架_04

        jlTitle = new JLabel("SLG地图编辑器");

Java制作高德地图GIS java地图编辑器_框架_04

        jlTips = new JLabel();

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        // JButton

Java制作高德地图GIS java地图编辑器_框架_04

        jbLoadMapFromFile = new JButton("Load Maps");

Java制作高德地图GIS java地图编辑器_框架_04

        jbLoadMapFromFile.addActionListener(this);

Java制作高德地图GIS java地图编辑器_框架_04

        jbSave = new JButton("Save Maps");

Java制作高德地图GIS java地图编辑器_框架_04

        jbSave.addActionListener(this);

Java制作高德地图GIS java地图编辑器_框架_04

        jbOK = new JButton("OK");

Java制作高德地图GIS java地图编辑器_框架_04

        // jbOK.setMaximumSize(new Dimension(6, 12));

Java制作高德地图GIS java地图编辑器_框架_04

        jbOK.addActionListener(this);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        // jbOK.setSize(d);

Java制作高德地图GIS java地图编辑器_框架_04

        jbCancel = new JButton("Cancel");

Java制作高德地图GIS java地图编辑器_框架_04

        jbCancel.setEnabled(false);        

Java制作高德地图GIS java地图编辑器_框架_04

        jbIcon = new JButton("WaterMiddle", 

Java制作高德地图GIS java地图编辑器_框架_04

            LandStylePic.LANDSTYLES[LandStylePic.getIndex("water_right")]);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        // JPanel

Java制作高德地图GIS java地图编辑器_框架_04

        jpSouth = new JPanel(new FlowLayout());

Java制作高德地图GIS java地图编辑器_框架_04

        jpSouth.add(jbOK);

Java制作高德地图GIS java地图编辑器_框架_04

        jpSouth.add(jbCancel);

Java制作高德地图GIS java地图编辑器_框架_04

            

Java制作高德地图GIS java地图编辑器_框架_04

        jpNorth = new JPanel(new FlowLayout());

Java制作高德地图GIS java地图编辑器_框架_04

        jpNorth.add(jlTitle);

Java制作高德地图GIS java地图编辑器_框架_04

            

Java制作高德地图GIS java地图编辑器_框架_04

        jpEast = new JPanel(new GridLayout(0,1));

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        jpEastCo = new JPanel(new FlowLayout());

Java制作高德地图GIS java地图编辑器_框架_04

        jpEastCo.add(jbIcon);

Java制作高德地图GIS java地图编辑器_框架_04

        jpEast.add(jpEastCo);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        jpEastCo = new JPanel(new FlowLayout());

Java制作高德地图GIS java地图编辑器_框架_04

        jpEastCo.add(jbSave);

Java制作高德地图GIS java地图编辑器_框架_04

        jpEast.add(jpEastCo);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        jpEastCo = new JPanel(new FlowLayout());

Java制作高德地图GIS java地图编辑器_框架_04

        jpEastCo.add(jbLoadMapFromFile);

Java制作高德地图GIS java地图编辑器_框架_04

        jpEast.add(jpEastCo);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        jpEastCo = new JPanel(new FlowLayout());

Java制作高德地图GIS java地图编辑器_框架_04

        jpEastCo.add(jtf);

Java制作高德地图GIS java地图编辑器_框架_04

        jpEast.add(jpEastCo);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        jpEastCo = new JPanel(new FlowLayout());

Java制作高德地图GIS java地图编辑器_框架_04

        jpEastCo.add(jlTips);

Java制作高德地图GIS java地图编辑器_框架_04

        jpEast.add(jpEastCo);

Java制作高德地图GIS java地图编辑器_框架_04

                

Java制作高德地图GIS java地图编辑器_框架_04

        jpIcon = new JPanel(new GridLayout(HEIGHT,WIDTH,0,0));

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

        /**//*

Java制作高德地图GIS java地图编辑器_框架_04

        for(int i = 0, j = 0; i<HEIGHT*WIDTH; i++)

Java制作高德地图GIS java地图编辑器_框架_04

        {

Java制作高德地图GIS java地图编辑器_框架_04

            j = rand.nextInt(4);

Java制作高德地图GIS java地图编辑器_框架_04

            jlMap = new JLabel(LandStylePic.LANDSTYLES[j]);

Java制作高德地图GIS java地图编辑器_框架_04

            jpIcon.add(jlMap);

Java制作高德地图GIS java地图编辑器_框架_04

        }

Java制作高德地图GIS java地图编辑器_java_21

        //*/

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        // 按数组内容添加地图图片

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

        for (int i = 0; i < 10; i++) ...{

Java制作高德地图GIS java地图编辑器_框架_04

            jlMap = new JLabel( LandStylePic.LANDSTYLES[LandStylePic.getIndex(maps[i])] );

Java制作高德地图GIS java地图编辑器_框架_04

            jpIcon.add(jlMap);

Java制作高德地图GIS java地图编辑器_java_21

        }

Java制作高德地图GIS java地图编辑器_框架_04

        // 保证jpIcon内的JLabel不会因为外部窗口的拉伸而走样

Java制作高德地图GIS java地图编辑器_框架_04

        jpCenter = new JPanel(new FlowLayout());

Java制作高德地图GIS java地图编辑器_框架_04

        jpCenter.add(jpIcon);

Java制作高德地图GIS java地图编辑器_框架_04

        

Java制作高德地图GIS java地图编辑器_框架_04

        // JFrame

Java制作高德地图GIS java地图编辑器_框架_04

        this.setLayout(new BorderLayout());

Java制作高德地图GIS java地图编辑器_框架_04

        this.setSize(500, 400);

Java制作高德地图GIS java地图编辑器_框架_04

        this.setResizable(false);

Java制作高德地图GIS java地图编辑器_框架_04

        this.add(BorderLayout.NORTH, jpNorth);

Java制作高德地图GIS java地图编辑器_框架_04

        this.add(BorderLayout.SOUTH, jpSouth);

Java制作高德地图GIS java地图编辑器_框架_04

        this.add(BorderLayout.CENTER, jpCenter);

Java制作高德地图GIS java地图编辑器_框架_04

        this.add(BorderLayout.EAST, jpEast);

Java制作高德地图GIS java地图编辑器_java_21

    }

Java制作高德地图GIS java地图编辑器_框架_04

    

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    /** *//**

Java制作高德地图GIS java地图编辑器_框架_04

     * Method actionPerformed

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_框架_04

     * @param e

Java制作高德地图GIS java地图编辑器_框架_04

     *

Java制作高德地图GIS java地图编辑器_java_21

     */

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

    public void actionPerformed(ActionEvent e) ...{

Java制作高德地图GIS java地图编辑器_框架_04

        // TODO: 在这添加你的代码

Java制作高德地图GIS java地图编辑器_框架_04

        if (e.getActionCommand().equals("OK"))

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

        ...{

Java制作高德地图GIS java地图编辑器_框架_04

            System.exit(0);

Java制作高德地图GIS java地图编辑器_java_21

        }

Java制作高德地图GIS java地图编辑器_框架_04

        else if(e.getActionCommand().equals("Save Maps"))

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

        ...{

Java制作高德地图GIS java地图编辑器_框架_04

            change *= -1;

Java制作高德地图GIS java地图编辑器_框架_04

            if(change > 0)

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

            ...{

Java制作高德地图GIS java地图编辑器_框架_04

                jtf.setText("Text测试……");

Java制作高德地图GIS java地图编辑器_框架_04

                jlTips.setText("");

Java制作高德地图GIS java地图编辑器_java_21

            }

Java制作高德地图GIS java地图编辑器_框架_04

            else

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

            ...{

Java制作高德地图GIS java地图编辑器_框架_04

                jlTips.setText("Two pigs");

Java制作高德地图GIS java地图编辑器_框架_04

                jtf.setText("");

Java制作高德地图GIS java地图编辑器_java_21

            }

Java制作高德地图GIS java地图编辑器_java_21

        }

Java制作高德地图GIS java地图编辑器_框架_04

        else if (e.getActionCommand().equals("Load Maps") || e.getActionCommand().equals("载入地图"))

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

        ...{

Java制作高德地图GIS java地图编辑器_框架_04

            System.out.println("Map loaded...");

Java制作高德地图GIS java地图编辑器_java_21

        }

Java制作高德地图GIS java地图编辑器_框架_04

        else if (e.getActionCommand().equals("退出"))

Java制作高德地图GIS java地图编辑器_java_14

Java制作高德地图GIS java地图编辑器_框架_15

        ...{

Java制作高德地图GIS java地图编辑器_框架_04

            System.exit(0);

Java制作高德地图GIS java地图编辑器_java_21

        }

Java制作高德地图GIS java地图编辑器_java_21

    }

Java制作高德地图GIS java地图编辑器_java_05

}

Java制作高德地图GIS java地图编辑器_框架_06


这里对于上次的文件有些许的改动,比如框架被定死了,不能拉伸啊等等,自己去发掘下不同,细细品味下(虽然我编的东西乱七八糟,没什么值得品位的 T-T)。这里定义的char的数组maps就是我们的地图格式,它的符号可以从LandStylePic定义的MapsConstruction类的数组里得到。

再给个对应的效果图:

Java制作高德地图GIS java地图编辑器_null_394

这样一下后,下次终于可以讲关于文件读取和存储的问题了,要用到IO了哦~(其实这个我还没开始看,慢慢来吧,反正是读书笔记,不急不急)