java jcombobox 联动_java的JCombobox实现中国省市区三级联动
用xml存储中国各大城市的数据。
xml数据太多了就不贴上了,贴个图片:
要解释xml,添加了一个jdom.jar,上面的源代码下载里面有。
解释xml的类:
package com.qiantu.component;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XMLDao {
/**
* 根据某个城市获取此省市的所有地区
* @param districts
* @return
*/
public static List getDistricts(String districts) {
List list = new ArrayList();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document xmldoc = db.parse(new File("xml/Districts.xml"));
Element root = xmldoc.getDocumentElement();
NodeList nodes = selectNodes("//District[@city='"+districts+"']", root);
for(int i=0; i
Node node = nodes.item(i);
String name = node.getTextContent();
list.add(name);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
/**
* 根据某个省份的名字获取此省份的所有城市
* @param provinces
* @return
*/
public static List getCities(String provinces) {
List list = new ArrayList();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document xmldoc = db.parse(new File("xml/Cities.xml"));
Element root = xmldoc.getDocumentElement();
NodeList nodes = selectNodes("//City[@Province='"+provinces+"']", root);
for(int i=0; i
Node node = nodes.item(i);
String name = node.getTextContent();
list.add(name);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
/**
* 获取所有省份
* @return
*/
public static List getProvinces() {
List list = new ArrayList();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document xmldoc = db.parse(new File("xml/Provinces.xml"));
Element root = xmldoc.getDocumentElement();
NodeList nodes = selectNodes("/Provinces/Province", root);
for(int i=0; i
Node node = nodes.item(i);
String name = node.getTextContent();
list.add(name);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
/**
* 根据xpath获取某一个节点
* @param express
* @param source
* @return
*/
public static Node selectSingleNode(String express, Object source) {// 查找节点,并返回第一个符合条件节点
Node result = null;
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
try {
result = (Node) xpath
.evaluate(express, source, XPathConstants.NODE);
} catch (XPathExpressionException e) {
e.printStackTrace();
}
return result;
}
/**
* 根据xpath获取符合条件的所有节点
* @param express
* @param source
* @return
*/
public static NodeList selectNodes(String express, Object source) {// 查找节点,返回符合条件的节点集。
NodeList result = null;
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
try {
result = (NodeList) xpath.evaluate(express, source,
XPathConstants.NODESET);
} catch (XPathExpressionException e) {
e.printStackTrace();
}
return result;
}
}
实现三级联动的类:
package com.qiantu.component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
public class JComboboxOfChina {
private JComboBox combobox_privince;
private JComboBox combobox_city;
private JComboBox combobox_area;
private DefaultComboBoxModel model1 = new DefaultComboBoxModel();
private DefaultComboBoxModel model2 = new DefaultComboBoxModel();
private DefaultComboBoxModel model3 = new DefaultComboBoxModel();
public JComboboxOfChina() {
//设置省市区三级联动数据
//设置第一级数据,从xml里面获取数据
for(String str : XMLDao.getProvinces()) {
model1.addElement(str);
}
combobox_privince = new JComboBox(model1);
combobox_privince.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JComboBox source = (JComboBox) evt.getSource();
//根据获取的省份找到它下面的级别的市
String provinces = (String) source.getSelectedItem();
List cities = XMLDao.getCities(provinces);
model2.removeAllElements();
for (String str : cities) {
model2.addElement(str);
}
model3.removeAllElements();
for (String str : XMLDao.getDistricts(cities.get(0))) {
model3.addElement(str);
}
}
});
//设置二级数据
for (String str : XMLDao.getCities("北京市")) {
model2.addElement(str);
}
combobox_city = new JComboBox(model2);
combobox_city.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JComboBox source = (JComboBox) evt.getSource();
String city = (String) source.getSelectedItem();
List districts = XMLDao.getDistricts(city);
model3.removeAllElements();
for (String str : districts) {
model3.addElement(str);
}
}
});
//设置三级数据
for (String str : XMLDao.getDistricts("北京市")) {
model3.addElement(str);
}
combobox_area = new JComboBox(model3);
}
public JComboBox getCombobox_privince() {
return combobox_privince;
}
public JComboBox getCombobox_city() {
return combobox_city;
}
public JComboBox getCombobox_area() {
return combobox_area;
}
}
一个调用的例子:
package com.qiantu.component;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
public class TestJComboboxOfChina {
public static void main(String[] args) {
JFrame j = new JFrame();
j.setSize(300,300);
j.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
j.setLayout(null);
//构建中国各大城市的三级联动下拉框
JComboboxOfChina box = new JComboboxOfChina();
//构造省级下拉框
JLabel label_privince = new JLabel("省份:");
label_privince.setBounds(50, 50, 50, 30);
JComboBox combobox_privince = box.getCombobox_privince();
combobox_privince.setBounds(100, 50, 150, 30);
j.add(label_privince);
j.add(combobox_privince);
//构造市级下拉框
JLabel label_city = new JLabel("城市:");
label_city.setBounds(50, 100, 50, 30);
JComboBox combobox_city = box.getCombobox_city();
combobox_city.setBounds(100, 100, 150, 30);
j.add(label_city);
j.add(combobox_city);
//构建区级下拉框
JLabel label_area = new JLabel("地区:");
label_area.setBounds(50, 150, 50, 30);
JComboBox combobox_area = box.getCombobox_area();
combobox_area.setBounds(100, 150, 150, 30);
j.add(label_area);
j.add(combobox_area);
j.setVisible(true);
}
}
java jcombobox 联动_java的JCombobox实现中国省市区三级联动相关推荐
- java封装省市区三级json格式,2016中国省市区三级联动json格式.pdf
2016中国省市区三级联动json格式 2016 年中国省市区三级联的JSON 格式 {"北京市":{"name":"北京市"," ...
- 中国省市区三级联动实例(AJAX实现)
本文利用ajax实现一个省市区三级联动示例: 1.测试页面(test.htm) <!DOCTYPE html> <html> <head> <title> ...
- Select下拉框实现中国省市区三级联动
JS Select下拉框实现中国省市区三级联动 联动效果 以内蒙古自治区为例 distpicker.js资源获取 https://pan.baidu.com/s/1S17KyRmPfz6WYaYUV1 ...
- 中国省市区三级联动sql表整理(含港澳台)免费使用
中国省市区三级联动sql表整理(含港澳台)免费使用 链接:https://pan.baidu.com/s/1ljtoBn1hflIJ0BLLXxwveg 提取码:w6vp 复制这段内容后打开百度网盘手 ...
- PHP + jQuery + Json 实现中国省市区三级联动
定义省市区结构的JSON文件代码: city.data.js: var cityData = [{value: '110000',text: '北京市',children: [{value: &quo ...
- Java 省市区三级联动
省市区三级联动 1.创建两个类的项目,先运行在修改中理解.重要的是要自己写一遍,理解一句代码最好的方法就是替换,删除观察区别. package linkge; import javax.swing.; ...
- laraveladmin省市区三级联动
Distpicker是一个中国省市区三级联动选择组件,这个包是基于Distpicker的laravel-admin扩展,用来将Distpicker集成进laravel-admin的表单中 安装 com ...
- 中国地区三级联动下拉菜单的实现
1.首先是js文件(area.js): 1 function Dsy() 2 { 3 this.Items = {}; 4 } 5 Dsy.prototype.add = function(id,iA ...
- java实现省市区的联动,chosen实现省市区三级联动
本文实例为大家分享了chosen实现省市区三级联动的具体代码,供大家参考,具体内容如下 效果图: 一.资源 1.1.css资源 1.2.js资源 二.代码 请选择省份 ${province.name! ...
- 实战演练-java+微信小程序实现省市区三级联动
最终效果图 官方的"省市区选择器"mode="region"里的数据是定死的由微信提供,不能做更改,好在同是picker组件mode="multiSe ...
最新文章
- dll文件32位64位检测工具以及Windows文件夹SysWow64的坑
- java中有哪几种注释方式_在 Java 中, 有多种注释方法,其中 __________ 适用于单行注释。...
- java运行原理_Java程序的加载与运行原理详解
- 使用Go语言从零编写PoS区块链(译)
- 干,认识Audio框架还因此发现一个雷
- 详解HTML5网页结构
- 对Javascript局部变量的理解
- 实验11 链表 程序1奇数值结点链表
- GitLab CI的入门搭建
- 对于打LOG的方法 可以这样搞
- oracle 安装包_【Oracle监控】-Spotlight On Oracle安装和使用
- 用计算机和手算标准差不一致,计量师基础知识教案二第三章.ppt
- 北邮计算机考研科目2022,2022考研:北京邮电大学计算机专业考研经验复习指导...
- WIN7下安装WIN2003系统
- unity ui界面 鼠标变图片移动
- 优秀课程案例|如何用scratch画折线统计图
- python实训名片管理程序_python实现名片管理系统
- videojs实现视频列表 点击播放下个视频
- apollo自动驾驶进阶学习之:ST与ST迭代过程
- 调整计算机启动顺序,电脑双系统如何修改第一启动项???
热门文章
- linux 权限不够命令
- 基于ROS的机器人建图与导航仿真全过程
- excel怎么输入度分秒,并转换为可编辑文本格式
- mac终端链接阿里云服务器
- 常用邮箱的服务器(SMTP/POP3)地址和端口整理
- python url转码_URL转码,encodeURI,encodeURIComponent — 在线工具
- html 超链接 中文转码,html和Url转码与解码
- Final Project 期末项目: PySnake
- 二阶魔方万能还原公式_魔方小站二阶魔方速拧《2阶魔方公式 视频教程》
- 推荐效果线上评测:AB测试平台的设计与实现