提供有china.xml和china.sql文件,实现全国省市区的三级联动效果

一、xml实现

import java.awt.EventQueue;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

import javax.swing.JComboBox;

import javax.swing.JLabel;

import org.dom4j.Attribute;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.Node;

import org.dom4j.io.SAXReader;

import java.awt.Font;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import java.io.File;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import javax.swing.DefaultComboBoxModel;

@SuppressWarnings("serial")

public class ChinaJFrame extends JFrame {

private JPanel contentPane;

private List cityList=null;

private List provinceList=null;

private List countyList=null;

@SuppressWarnings("rawtypes")

private JComboBox provinceComboBox, cityComboBox, countyComboBox;

SAXReader reader = new SAXReader();

Document document = null;

List list=null;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

ChinaJFrame frame = new ChinaJFrame();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the frame.

*

* @throws DocumentException

*/

@SuppressWarnings({ "rawtypes", "unchecked" })

public ChinaJFrame() throws DocumentException {

setResizable(false);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(null);

provinceComboBox = new JComboBox();

provinceComboBox.setModel(new DefaultComboBoxModel(new String[] { "省份" }));

provinceComboBox.setBounds(33, 106, 108, 21);

cityComboBox = new JComboBox();

cityComboBox.setBounds(171, 106, 108, 21);

cityComboBox.setModel(new DefaultComboBoxModel(new String[] { "地级市" }));

countyComboBox = new JComboBox();

countyComboBox.setBounds(302, 106, 108, 21);

countyComboBox.setModel(new DefaultComboBoxModel(new String[] { "市、县级市" }));

provinceList = getProvince("province");

for (String s : provinceList) {

provinceComboBox.addItem(s);

}

provinceComboBox.addItemListener(new ItemListener() {

@Override

public void itemStateChanged(ItemEvent e) {

if(e.getStateChange() == ItemEvent.SELECTED){

int ProvinceIndex = provinceComboBox.getSelectedIndex();

cityList = getCity(ProvinceIndex);

cityComboBox.removeAllItems();

for (String s : cityList) {

cityComboBox.addItem(s);

}

}

}

});

cityComboBox.addItemListener(new ItemListener() {

@Override

public void itemStateChanged(ItemEvent e) {

if(e.getStateChange() == ItemEvent.SELECTED){

cityComboBox=(JComboBox) e.getSource();

String name2=(String) cityComboBox.getSelectedItem();

countyList=getCounty(name2);

countyComboBox.removeAllItems();

for(String cl:countyList){

countyComboBox.addItem(cl);

}

}

}

});

JLabel lblNewLabel = new JLabel(

"\u5168\u56FD\u57CE\u5E02\u4E09\u7EA7\u8054\u52A8");

lblNewLabel.setFont(new Font("宋体", Font.BOLD, 18));

lblNewLabel.setBounds(140, 25, 160, 48);

contentPane.add(provinceComboBox);

contentPane.add(cityComboBox);

contentPane.add(countyComboBox);

contentPane.add(lblNewLabel);

}

@SuppressWarnings("unchecked")

public List getProvince(String name) {

list = new ArrayList();

try {

document = reader.read(new File("src/china.xml"));

} catch (DocumentException e) {

e.printStackTrace();

}

Element root = document.getRootElement();

for(Iterator i = root.elementIterator(name); i.hasNext();) {

Element node = i.next();

List attrs = node.attributes();

if (attrs != null) {

for (Attribute attr : attrs) {

list.add(attr.getValue());

}

}

}

return list;

}

@SuppressWarnings("unchecked")

public List getCity(int index) {

list = new ArrayList();

try {

document = reader.read(new File("src/china.xml"));

} catch (DocumentException e) {

e.printStackTrace();

}

Element root = document.getRootElement();

List elements = root.elements();

List elements1 = elements.get(index-1).elements();

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

List attrs = elements1.get(i).attributes();

if (attrs != null) {

for (Attribute attr : attrs) {

list.add(attr.getValue());

}

}

}

return list;

}

@SuppressWarnings("unchecked")

public List getCounty(String name2){

list = new ArrayList();

try {

document = reader.read(new File("src/china.xml"));

} catch (DocumentException e) {

e.printStackTrace();

}

province[@name='北京市']

List nodes = document.selectNodes("//city[@name='" + name2 + "']//county//@name");

for (Node node : nodes) {

list.add(node.getText());

}

return list;

}

}

二、数据库实现

(1)数据库连接的配置文件

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/china

root

root

100

20

10

5

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/china

root

root

100

20

10

5

(2)实体Bean

public class Province {//省

private Integer id;

private String name;

}

public class City {//市

private Integer id;

private String name;

private Integer p_id;

}

public class County {//区

private Integer id;

private String name;

private Integer c_id;

}

(3)数据库操作接口定义和实现

public interface ChinaDao {

List getObjects();

List getCityObjectsById(Integer id);

List getCountyObjectsById(Integer id);

City getIdByName(String name);

}

public class ChinaDaoImpl implements ChinaDao{

private JdbcTemplate jdbcTemplate=new JdbcTemplate(DBConn.getDataSourse());

private List entities=null;

@SuppressWarnings({ "unchecked", "rawtypes" })

@Override

public List getObjects() {

String sql="select id, name from province";

entities=jdbcTemplate.query(sql, new RowMapper(){

@Override

public Object mapRow(ResultSet rs, int arg1) throws SQLException {

Province province=new Province();

province.setId(rs.getInt("id"));

province.setName(rs.getString("name"));

return province;

}

});

return entities;

}

@SuppressWarnings({ "unchecked", "rawtypes" })

@Override

public List getCityObjectsById(Integer id) {

String sql="select id, name ,p_id from city where p_id=?";

entities=jdbcTemplate.query(sql, new Object[]{id},new RowMapper(){

@Override

public Object mapRow(ResultSet rs, int arg1) throws SQLException {

City city=new City();

city.setId(rs.getInt("id"));

city.setName(rs.getString("name"));

city.setP_id(rs.getInt("p_id"));

return city;

}

});

return entities;

}

@SuppressWarnings({ "unchecked", "rawtypes" })

@Override

public List getCountyObjectsById(Integer id) {

String sql="select id, name ,c_id from county where c_id=?";

entities=jdbcTemplate.query(sql, new Object[]{id},new RowMapper(){

@Override

public Object mapRow(ResultSet rs, int arg1) throws SQLException {

County county=new County();

county.setId(rs.getInt("id"));

county.setName(rs.getString("name"));

county.setC_id(rs.getInt("c_id"));

return county;

}

});

return entities;

}

@SuppressWarnings({ "unchecked", "rawtypes" })

@Override

public City getIdByName(String name) {

String sql="select id, name ,p_id from city where name=?";

City entity=jdbcTemplate.queryForObject(sql, new Object[]{name},new RowMapper(){

@Override

public Object mapRow(ResultSet rs, int arg1) throws SQLException {

City city=new City();

city.setId(rs.getInt("id"));

city.setName(rs.getString("name"));

city.setP_id(rs.getInt("p_id"));

return city;

}

});

return entity;

}

}

(4)具体实现

public class ChinaJFrame extends JFrame {

private ChinaDao chinaDao=new ChinaDaoImpl();

private JPanel contentPane;

private List cityList=null;

private List provinceList=null;

private List countyList=null;

@SuppressWarnings("rawtypes")

private JComboBox provinceComboBox, cityComboBox, countyComboBox;

SAXReader reader = new SAXReader();

Document document = null;

List list=null;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

ChinaJFrame frame = new ChinaJFrame();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the frame.

*

* @throws DocumentException

*/

@SuppressWarnings({ "rawtypes", "unchecked" })

public ChinaJFrame() throws DocumentException {

setResizable(false);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(null);

provinceComboBox = new JComboBox();

provinceComboBox.setModel(new DefaultComboBoxModel(new String[] { "省份" }));

provinceComboBox.setBounds(33, 106, 108, 21);

cityComboBox = new JComboBox();

cityComboBox.setBounds(171, 106, 108, 21);

cityComboBox.setModel(new DefaultComboBoxModel(new String[] { "地级市" }));

countyComboBox = new JComboBox();

countyComboBox.setBounds(302, 106, 108, 21);

countyComboBox.setModel(new DefaultComboBoxModel(new String[] { "市、县级市" }));

List provinces=chinaDao.getObjects();

provinceList = new ArrayList();

for(Province p:provinces){

provinceList.add(p.getName());

}

for (String s : provinceList) {

provinceComboBox.addItem(s);

}

provinceComboBox.addItemListener(new ItemListener() {

@Override

public void itemStateChanged(ItemEvent e) {

if(e.getStateChange() == ItemEvent.SELECTED){

cityList=new ArrayList();

int ProvinceIndex = provinceComboBox.getSelectedIndex();

List cities=chinaDao.getCityObjectsById(ProvinceIndex);

for(City city:cities){

cityList.add(city.getName());

}

cityComboBox.removeAllItems();

for (String s : cityList) {

cityComboBox.addItem(s);

}

}

}

});

cityComboBox.addItemListener(new ItemListener() {

@Override

public void itemStateChanged(ItemEvent e) {

if(e.getStateChange() == ItemEvent.SELECTED){

cityComboBox=(JComboBox) e.getSource();

String name=(String) cityComboBox.getSelectedItem();

countyList=new ArrayList();

int CityIndex = chinaDao.getIdByName(name).getId();

List counties=chinaDao.getCountyObjectsById(CityIndex);

for(County county:counties){

countyList.add(county.getName());

}

countyComboBox.removeAllItems();

for(String cl:countyList){

countyComboBox.addItem(cl);

}

}

}

});

JLabel lblNewLabel = new JLabel(

"\u5168\u56FD\u57CE\u5E02\u4E09\u7EA7\u8054\u52A8");

lblNewLabel.setFont(new Font("宋体", Font.BOLD, 18));

lblNewLabel.setBounds(140, 25, 160, 48);

contentPane.add(provinceComboBox);

contentPane.add(cityComboBox);

contentPane.add(countyComboBox);

contentPane.add(lblNewLabel);

}

}

mysql 省市县三级联动查询_三级联动查询全国省市区(xml与数据库)相关推荐

  1. oracle 查询天,Oracle查询_ 单表查询

    前面我们详解了关于Oracle的增删改,今天让我们接着来学习Oracle的查询吧, Oracle中查询可是重头戏噢!!!跟着煌sir的步伐,走位,走位~~~ 小知识锦囊 在此前,先讲解一个小知识点 O ...

  2. MySQL笔记:第06章_多表查询

    第06章_多表查询 多表查询概述 1.一个案例引发的多表连接 1.1 案例说明 1.2 笛卡尔积(或交叉连接)的理解 演示代码 2. 多表查询分类讲解 分类1:等值连接 vs 非等值连接 等值连接 非 ...

  3. 智伴机器人三级分销模式_三级分销模式是如何实现裂变的?

    三级分销模式是如何实现裂变的? 发布时间:2019-07-16 点击量:5399 分销模式是很多人认可的营销模式,很多企业也在用这种模式并且出现了很多成功案例.但有些新手不太了解三级分销系统具体是什么 ...

  4. 智伴机器人三级分销模式_三级分销模式详细解说不来了解一下吗!

    互联网的诞生,让不少人都感受到科技带给人们的便利性,但是也好的一面,也就有了坏的一面,以前信息传输是较为困难且成本也高,但现在来说,人们获取信息的速度已经是很快了,所以这就对企业公司提出了要求,必须创 ...

  5. java数据查询_数据的查询

    -- 创建数据 CREATE DATABASE day2; -- 使用数据库 USE day2; -- 创建一个表格 CREATE TABLE stu( id INT, NAME VARCHAR(20 ...

  6. sql \n 查询_探索SQL查询提示选项(快速N)

    sql \n 查询 In this article, we will introduce SQL queries hint and will analyze the OPTION(Fast 'N') ...

  7. 如何根据vin码查询_车架号查询-VIN查询-车辆识别码查询-宜配网

    请输入17位车架号码: 通过车架号查询车辆信息,在销售配件,二手车交易中十分重要,宜配网车架号在线查询系统,提供免费的车架号查询. 宜配网解码了全球大多数主流车型的车架号,宜配网车架号在线查询系统,不 ...

  8. oracle之子查询_,Oracle子查询详解

    Oracle子查询详解,根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询, 子查询概念 :当一个查询的结果是另一个查询的条件时,,称之为子查询. 使用子查询注意事项: 子查 ...

  9. 智伴机器人三级分销模式_三级分销系统是什么模式

    展开全部 三级分销模式顾名思义:分销商只能获取三层佣金,超过三级就e68a843231313335323631343130323136353331333431353330与你无关.三级分销,也即品牌商 ...

  10. 智伴机器人三级分销模式_三级分销系统的模式有哪些

    分配系统有多种模式,在现在微商火爆的阶段,三级分销系统很多人都会有一定的了解.三级分销是分销系统中的一个分支,这种模式虽然说比较少见,比较新鲜,但只要是做过微商的人,相信对三级分销系统的模式和作用都是 ...

最新文章

  1. Android监视返回键
  2. 腾讯云快直播——超低延迟直播技术方案及应用
  3. Python爬虫:一些常用的爬虫技巧总结
  4. android 继承listview,Android listView 继承ListActivity的用法
  5. 从市场角度看服务器虚拟化
  6. ddr4服务器内存和普通内存_买主板送DDR4内存!微星日联合大促开幕
  7. 【安全】phpldapadmin-1.2.3 界面使用
  8. 区块链技术介绍PPT
  9. 神经网络关于输入X 权重W 和偏置biase 的Shape形式辨析
  10. 免费从5sing上下载歌曲
  11. Latex中PDF文档目录乱码解决方案
  12. 基于物联网的室内环境监测系统设计的背景
  13. 电脑怎么连接隐藏的无线WiFi ?
  14. 非磺酸型离子液体([pmim]HSO4、[bmim]HSO4、[bpy]HSO4、[ppy]HSO4、[pmim]BF、[pmim]CF3SO3、[pmim]H2PO4)的定制合成
  15. Python爬虫实战(02)—— 爬取诗词名句三国演义
  16. python matplotlib中误差棒图
  17. 程序员必备的11个Github优质项目
  18. 2022年最流行的几款软件缺陷管理工具
  19. 数学证明到底是什么?
  20. iqooneo3 如何不用vivo账号下载外部应用_iQOO Neo3评测:救市或转型?总之香就对了...

热门文章

  1. Blender真是不错的东西
  2. java 常用汉字_中国常用汉字有多少
  3. EVE上传Dynamips、IOL镜像
  4. Linux网络服务(network service)管理
  5. tcp 11种状态转换图
  6. 怎样使用PDFlib显示简体中文输出中文而不出现空白说明附源码
  7. DenseNet 简介
  8. python解释器安装过程
  9. 行泊ADAS摄像头前装搭载同比增长54.15%,TOP10供应商领跑
  10. Android PDF 的 读取 与 生成