文档章节

编写中国省市信息树

miring
 miring
发布于 2017/03/31 14:55
字数 980
阅读 21
收藏 0

对于具有层次关系的结构,使用树控件描述是非常方便的,如文件夹及其子文件夹之间的关系、国家的行政结构关系等。本实例将使用树控件来表示中国的各个行政区域。使用Swing库中定义的工具类可以非常容易地实现。实例运行效果如图 输入图片说明

说明:单击三角形的小图标可以显示和隐藏树节点。 DefaultMutableTreeNode是树数据结构中的通用节点。一个树节点最多可以有一个父节点、0 或多个子节点。DefaultMutableTreeNode 为检查和修改节点的父节点和子节点提供操作,也为检查节点所属的树提供操作。节点的树是所有节点的集合,通过从某一节点开始并沿着父节点和子节点的所有可能的链接,可以访问这些节点。可以使用其含有参数的构造方法在创建节点对象时定义节点的内容,该方法的声明如下:

public DefaultMutableTreeNode(Object userObject)

参数说明 userObject:用户提供的 Object,它构成节点的数据。  提示:参数userObject的类型是Object,这意味着可以使用File等类型作为树的节点。 使用add()方法为一个节点增加子节点就可以实现层次关系,该方法的声明如下:

public void add(MutableTreeNode newChild)

参数说明 newChild:作为此节点的子节点添加的节点。 (1)编写类ChinaGeographyTree,该类继承了JFrame。在框架中包含了一棵树,在树中显示了中国的直辖市、省、自治区和特别行政区信息。 (2)编写方法do_this_windowActivated(),用来监听窗体激活事件。在该方法中,为树控件增加节点信息。代码如下:

package com.mingrisoft.jtree;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.UIManager;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import java.awt.Font;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class ChinaGeographyTree extends JFrame {
    
    /**
     * 
     */
    private static final long serialVersionUID = -6221329006071145576L;
    private JPanel contentPane;
    private JTree tree;
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Throwable e) {
            e.printStackTrace();
        }
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ChinaGeographyTree frame = new ChinaGeographyTree();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    /**
     * Create the frame.
     */
    public ChinaGeographyTree() {
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowActivated(WindowEvent e) {
                do_this_windowActivated(e);
            }
        });
        setTitle("\u4E2D\u56FD\u884C\u653F\u533A\u57DF\u6811");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);
        
        JScrollPane scrollPane = new JScrollPane();
        contentPane.add(scrollPane, BorderLayout.CENTER);
        
        tree = new JTree();
        tree.setFont(new Font("微软雅黑", Font.PLAIN, 16));
        scrollPane.setViewportView(tree);
    }
    
    protected void do_this_windowActivated(WindowEvent e) {
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("中国");
        DefaultMutableTreeNode municipalities = new DefaultMutableTreeNode("直辖市");
        municipalities.add(new DefaultMutableTreeNode("北京"));
        municipalities.add(new DefaultMutableTreeNode("上海"));
        municipalities.add(new DefaultMutableTreeNode("天津"));
        municipalities.add(new DefaultMutableTreeNode("重庆"));
        DefaultMutableTreeNode province = new DefaultMutableTreeNode("省");
        province.add(new DefaultMutableTreeNode("黑龙江"));
        province.add(new DefaultMutableTreeNode("吉林"));
        province.add(new DefaultMutableTreeNode("辽宁"));
        province.add(new DefaultMutableTreeNode("江苏"));
        province.add(new DefaultMutableTreeNode("安徽"));
        province.add(new DefaultMutableTreeNode("四川"));
        province.add(new DefaultMutableTreeNode("青海"));
        province.add(new DefaultMutableTreeNode("山东"));
        province.add(new DefaultMutableTreeNode("广东"));
        province.add(new DefaultMutableTreeNode("河南"));
        province.add(new DefaultMutableTreeNode("湖南"));
        province.add(new DefaultMutableTreeNode("海南"));
        province.add(new DefaultMutableTreeNode("江西"));
        province.add(new DefaultMutableTreeNode("山西"));
        province.add(new DefaultMutableTreeNode("陕西"));
        province.add(new DefaultMutableTreeNode("河北"));
        province.add(new DefaultMutableTreeNode("湖北"));
        province.add(new DefaultMutableTreeNode("贵州"));
        province.add(new DefaultMutableTreeNode("浙江"));
        province.add(new DefaultMutableTreeNode("福建"));
        province.add(new DefaultMutableTreeNode("台湾"));
        province.add(new DefaultMutableTreeNode("甘肃"));
        province.add(new DefaultMutableTreeNode("云南"));
        DefaultMutableTreeNode ARegion = new DefaultMutableTreeNode("自治区");
        ARegion.add(new DefaultMutableTreeNode("内蒙古自治区"));
        ARegion.add(new DefaultMutableTreeNode("宁夏回族自治区"));
        ARegion.add(new DefaultMutableTreeNode("新疆维吾尔族自治区"));
        ARegion.add(new DefaultMutableTreeNode("西藏自治区"));
        ARegion.add(new DefaultMutableTreeNode("广西壮族自治区"));
        DefaultMutableTreeNode SARegion = new DefaultMutableTreeNode("特别行政区");
        SARegion.add(new DefaultMutableTreeNode("香港"));
        SARegion.add(new DefaultMutableTreeNode("澳门"));
        root.add(municipalities);
        root.add(province);
        root.add(ARegion);
        root.add(SARegion);
        DefaultTreeModel model = new DefaultTreeModel(root);
        tree.setModel(model);
    }
}

心法领悟:树结构简介。 一棵树由若干节点组成,每个节点有两种状态:没有子节点的称为叶子节点,具有子节点的称为父节点。除了根节点外,每个节点都有唯一的父节点。一棵树只有一个根节点。由若干树组成的集合称为森林。关于树的更加详细的介绍请参考专门的数据结构教材。

© 著作权归作者所有

miring
粉丝 0
博文 23
码字总数 14869
作品 0
长春
程序员
私信 提问
Winform开发框架之字典管理模块的更新,附上最新2013年全国最新县及县以上行政区划代码sql脚本

在很多项目里面,字典管理是必备的项目模块,而这个又是比较通用的功能,因此可以单独做成一个通用字典管理,例如这个模块,可以通过集成的方式,使用在我的《Winform开发框架》、《WCF开发框...

walb呀
2017/12/04
0
0
中国最新各个省市区县名称从哪里获取得到啊

最近我们项目在做交易,涉及到收货地址信息相关,然后在录入地区信息时卡壳啦,在哪里才能准确地获取中国目前最新且最全的省市区县的名称呢??请多指教

樱绾絮景零
2017/10/09
432
7
ECharts-X3D地图球体上是否可以嵌入实现中国地图省市两级

@pissang 你好,想跟你请教个问题:根据Map3D Mix Map用例,实现中国地图省市两级,可否把右边的中国地图嵌入球体,在球体上实现省市两级地图

破晓初阳
2016/06/21
186
0
如何获得美国地理信息

目前我遇到了一个需求. 组织世界各地的地理信息并入库. 我从中国天气网获得了中国所有省市的地理信息. 但是外国的中国天气网并没有提供. 请问有经验的高手, 如何才能获得到世界各地的地理信息...

Solidsnake
2015/08/18
74
2
android图片根据区域绑定事件并且能区域能随图片放大缩小,

我想做一个类似与中国地图,点击地图中的某个省市可以进入到该省市的详细地图。也就是可以监听不同省市的事件。而这个地图可以放大缩小。这样点击事件的区域也要随着放大缩小。不知道是否有这...

暗夜v公爵
2014/02/17
267
0

没有更多内容

加载失败,请刷新页面

加载更多

我为什么要写微信公众号

埋一颗种子,细心呵护,静待她枝繁叶茂,葱郁参天 V2论坛上有个帖子【做程序员最重要的还是一定要有自己的作品】,作者写道: 能有一个作品和你的名字联系在一起,应当成为在职业生涯前期着意...

运维咖啡吧
40分钟前
3
0
数据库

数据库架构 数据库架构可以分为存储文件系统和程序实例两大块,而程序实例根据不同的功能又可以分为如下小模块。 1550644570798 索引模块 常见的问题有: 为什么要使用索引 什么样的信息能成...

一只小青蛙
今天
5
0
PHP常用经典算法实现

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = int......

半缘修道半缘君丶
昨天
5
0
GIL 已经被杀死了么?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/8KvQemz0SWq2hw-2aBPv2Q 花下猫语: Python 中最广为人诟病的一点,大概就是它的 GIL 了。...

豌豆花下猫
昨天
6
0
git commit message form

commit message一般包括3部分:Header、Body、Footer。 <type>(<scope>):<subject>blank line<body>blank line<footer> header是必需的,body、footer可以省略。 header中type、subject......

ninjaFrog
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部