2. 定义获取省份的方法,创建一个Map集合,将上一步得到的映射集合赋值给它,使用Map集合的keySet()方法获取该集合中的所有键对象组成的Set 集合,即为省分集合,创建一个Object型一维数组,使用Set接口的toArray()方法将Set集合转换为数组,返回此数组作为省份选择下拉列表的参数。

  3. 使用JComboBox类的setModel()方法为省份下拉列表添加省份信息,参数即为上一步中的获取省份方法。

  4. 定义根据省份获取市/县的方法,创建一个Map集合,将步骤1中得到的映射集合赋值给它,使用Map集合的get()方法获取指定键的值,即为市/县集合,创建一个String[]型一维数组,将市/县集合赋值给该数组。

  5. 定义省份下拉列表的选项状态更改事件,在该事件中通过JComboBox类的getSelectedItem()方法获取选中的省份,默认为省份集合中的第一个值,然后使用JComboBox类的removeAllItems()方法清空市/县列表,根据选中的省份获取市/县数组,最后使用 JComboBox的setModel()方法重新添加市/县列表的值。

  代码如下:

  BackgroundPanel.java

  import java.awt.Graphics;

  import java.awt.Image;

  import javax.swing.JPanel;

  /**

  * 带背景的面板组件

  *

  * @author ZhongWei Lee

  */

  public class BackgroundPanel extends JPanel {

  /**

  *

  */

  private static final long serialVersionUID = 7758689434195492602L;

  /**

  * 背景图片

  */

  private Image image;

  /**

  * 构造方法

  */

  public BackgroundPanel() {

  super();

  setOpaque(false);

  setLayout(null);

  }

  /**

  * 设置图片的方法

  */

  public void setImage(Image image) {

  this.image = image;

  }

  @Override

  protected void paintComponent(Graphics g) {// 重写绘制组件外观

  if (image != null) {

  int width = getWidth();// 获取组件大小

  int height = getHeight();

  g.drawImage(image, 0, 0, width, height, this);// 绘制图片与组件大小相同

  }

  super.paintComponent(g);// 执行超类方法

  }

  }

  SwingResourceManager.java

  import java.awt.Image;

  import java.awt.Toolkit;

  import java.io.BufferedInputStream;

  import java.io.ByteArrayOutputStream;

  import java.io.FileInputStream;

  import java.io.IOException;

  import java.io.InputStream;

  import java.util.HashMap;

  import java.util.Iterator;

  import javax.swing.ImageIcon;

  /**

  * Utility class for managing resources such as colors, fonts, images, etc.

  *

  * This class may be freely distributed as part of any application or plugin.

  *

  * Copyright (c) 2003 - 2004, Instantiations, Inc.

  All Rights Reserved

  *

  * @author scheglov_ke

  */

  public class SwingResourceManager {

  /**

  * Maps image names to images

  */

  private static HashMap m_ClassImageMap = new HashMap();

  /**

  * Returns an image encoded by the specified input stream

  * @param is InputStream The input stream encoding the image data

  * @return Image The image encoded by the specified input stream

  */

  private static Image getImage(InputStream is) {

  try {

  ByteArrayOutputStream baos = new ByteArrayOutputStream();

  byte buf[] = new byte[1024 * 4];

  while (true) {

  int n = is.read(buf);

  if (n == -1)

  break;

  baos.write(buf, 0, n);

  }

  baos.close();

  return Toolkit.getDefaultToolkit().createImage(baos.toByteArray());

  } catch (Throwable e) {

  return null;

  }

  }

  /**

  * Returns an image stored in the file at the specified path relative to the specified class

  * @param clazz Class The class relative to which to find the image

  * @param path String The path to the image file

  * @return Image The image stored in the file at the specified path

  */

  public static Image getImage(Class clazz, String path) {

  String key = clazz.getName() + '|' + path;

  Image image = m_ClassImageMap.get(key);

  if (image == null) {

  if ((path.length() > 0) && (path.charAt(0) == '/')) {

  String newPath = path.substring(1, path.length());

  image = getImage(new BufferedInputStream(clazz.getClassLoader().getResourceAsStream(newPath)));

Java基础知识:Java实现Map集合二级联动2的更多相关文章

  1. Java基础知识:Java实现Map集合二级联动1

    Java实现Map集合二级联动 Map集合可以保存键值映射关系,这非常适合本实例所需要的数据结构,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息,本实例就是利用Map集合实现了省 ...

  2. JAVA基础知识|java虚拟机(JVM)

    一.JVM简介 java语言是跨平台的,兼容各种操作系统.实现跨平台的基石就是虚拟机(JVM),虚拟机不是跨平台的,所以不同的操作系统需要安装不同的jdk版本(jre=jvm+类库:jdk=jre+开 ...

  3. Java基础知识:Java实现Map集合二级联动4

    comboBox.setModel(new DefaultComboBoxModel(getProvince())); // 添加省份信息 final JLabel label = new JLabe ...

  4. Java实现Map集合二级联动

    Map集合可以保存键值映射关系,这非常适合本实例所需要的数据结构,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息,本实例就是利用Map集合实现了省市级联选择框,当选择省份信息时, ...

  5. Java基础知识总结之类的集合

    Java集合概述 1.集合类也叫作容器类.它的功能相当于一个容器.可以存储数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组). 2.Java的集合(容器),它是用来”装对象的“(实际上是 ...

  6. JAVA基础知识总结15(集合容器)

    集合框架:用于存储数据的容器. 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:对象的个数确定可以使用数组,但是不确定怎么办?可以用集合.因为集合是可变长度的. 集合和数组的区别: 1: ...

  7. java基础知识——Java的定义,特点和技术平台

    (作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...

  8. [java基础知识]java安装步骤

    jre:  java运行环境.  jre =  java虚拟机 + 核心类库(辅助java虚拟机运行的文件).如果只是运行java程序,只需要安装jre.    jdk: java开发工具集   jd ...

  9. Java基础知识:Java实现Map集合二级联动3

    * Returns an image stored in the file at the specified path * @param path String The path to the ima ...

随机推荐

  1. Go语言之旅:包

    每个 Go 程序都是由一些包组成的. 原文地址:https://golang-book.readthedocs.io 欢迎关注我们的公众号:小菜学编程 (coding-fan) 程序从 main 包开 ...

  2. 转发: Angular装饰器

    Angular中的装饰器是一个函数,它将元数据添加到类.类成员(属性.方法)和函数参数. 用法:要想应用装饰器,把它放在被装饰对象的上面或左边. Angular使用自己的一套装饰器来实现应用程序各部件 ...

  3. Xquery的初步学习(一次Lab作业的总结)

    Task 1: Open countries.xml, compose the following XQueries: 1. Return the area of Mongolia. 2. Retur ...

  4. 腾讯云的对象存储COS

    什么是对象存储COS Clound Object Storage,COS,专门为企业和开发者们提供能够存储海量的分布式存储服务,用户可以随时通过互联网对大量数据进行批量存储和处理,在任意位置存储和检索 ...

  5. Redis 之持久化

    目录 一.前言 二.持久化类型之 RDB 三.持节化类型之AOF 四.Redis 持久化类型的抉择 五.持久化的恢复 六.持久化问题的分析定位与优化 七.回顾总结 一.前言 首先,来回顾下前面文章的知 ...

  6. 随记181120Service Fabric问题

    https://github.com/Azure/service-fabric-issues/issues/1056 不能启动node one /five 问题

  7. Hadoop(二)CentOS7.5搭建Hadoop2.7.6完全分布式集群

    一 完全分布式集群(单点) Hadoop官方地址:http://hadoop.apache.org/ 1  准备3台客户机 1.1防火墙,静态IP,主机名 关闭防火墙,设置静态IP,主机名此处略,参考 ...

  8. Mac使用bootcamp安装win系统花屏解决方法

    15年11'乞丐版air装win屏幕花屏,很郁闷,先后找了网上很多方法,最终总结出了一个比较折中的方法,不玩游戏不使用大型3D的可以参考. 1 花屏现象 2 解决方法 2.1 禁用驱动 2.2 使用M ...

  9. Framwork框架-网络客户端的使用

    1.引入头文件 #include "Comm.h" 2.派生自框架基类CProtocolCpMgr class NetManager : public CProtocolCpMgr ...

  10. go 网络请求篇二

    框架地址:https://github.com/parnurzeal/gorequest package main //https://antarx.com/2018/05/05/gorequest- ...