JavaSwing实现树形结构
来源:互联网 发布:php开源社区系统 编辑:程序博客网 时间:2024/06/06 09:31
原文链接:http://blog.csdn.net/syb18810107241/article/details/17166093
一、Applet
package com.jy.applet.day1206; import java.awt.Container; import javax.swing.JApplet; import javax.swing.SwingUtilities; import javax.swing.UIManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.jy.applet.day1206.swing.pane.TestPane; /** * 用来实现树形结构的Applet * * @author Administrator * */ @SuppressWarnings("serial") public class AppletTest1 extends JApplet { private static final Log log = LogFactory.getLog(AppletTest1.class);// 日志记录 private static AppletTest1 instance; public static Container container;// 一个可包含其他 AWT 组件的组件。 public void init() { log.info("Applet初始化......"); instance = this; SwingUtilities.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(UIManager .getSystemLookAndFeelClassName());//设置外观感觉 container = getContentPane();//获取内容面板 TestPane pane = new TestPane();//初始化主面板 container.add(pane);//将主面板添加到内容面板 } catch (Exception e) { e.printStackTrace(); } } }); } public static AppletTest1 getInstance() { return instance; } public void destroy() { log.info("程序正在关闭....."); } }二、主面板
package com.jy.applet.day1206.swing.pane; import java.util.List; import javax.swing.JScrollPane; import javax.swing.JTree; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.jy.applet.day1206.swing.tree.JTreeNode; import com.jy.applet.util.DataTestDao; @SuppressWarnings({"serial","unchecked"}) public class TestPane extends JScrollPane{ private static final Log log = LogFactory.getLog(TestPane.class); private static TestPane instance;//实例变量 public JTree myTree;//面板中的树 JTreeNode rootNode ;//自定义根节点 public TestPane(){ instance = this; init(); } private void init() { log.info("开始初始化主面板......"); setAutoscrolls(true); getViewport().removeAll(); rootNode = new JTreeNode("中国"); JTreeNode secondTreeNode = null;//第二层节点 JTreeNode leafTreeNode = null;//叶子节点 List provinceList = DataTestDao.getProvinceList();//省份的集合 String provinceId = null; /**如果省份和城市的集合不为空,并且元素个数大于0**/ if (provinceList != null && provinceList.size() > 0) { for (int i = 0; i < provinceList.size(); i++) { secondTreeNode = (JTreeNode) provinceList.get(i);//获取二层节点 provinceId = secondTreeNode.getId();//获取省份ID List<JTreeNode> cityList = DataTestDao.getCityListByProID(provinceId);//根据省份ID查询城市 if(cityList != null && cityList.size() > 0){ for(int j = 0;j < cityList.size();j ++){ leafTreeNode = cityList.get(j);//获取叶子节点,即城市 secondTreeNode.add(leafTreeNode);//将叶子节点挂到第二层节点上 } } rootNode.add(secondTreeNode);//把第2层节点,添加到根节点 } } myTree = new JTree(rootNode);//以rootNode为根节点,创建一个树形结构 myTree.putClientProperty("JTree.lineStyle", "Horizontal");//树形结构的线条风格 myTree.setVisible(true); myTree.updateUI(); instance.setViewportView(myTree); /**注册事件**/ MyTreeAdapter treeAdapter = new MyTreeAdapter(); myTree.addTreeSelectionListener(treeAdapter); } public static TestPane getInstance() { return instance; } }三、用来模拟数据库的DAO
package com.jy.applet.util; import java.util.ArrayList; import java.util.List; import com.jy.applet.day1206.swing.tree.JTreeNode; import com.jy.applet.entity.City; /** * 用户模拟数据的DAO * @author Administrator * */ @SuppressWarnings("unchecked") public class DataTestDao { public static List getProvinceList() { List<String> provinces = new ArrayList<String>(); provinces.add("北京市"); provinces.add("天津市"); provinces.add("上海市"); provinces.add("重庆市"); provinces.add("山东省"); provinces.add("江苏省"); provinces.add("浙江省"); provinces.add("广东省"); List<JTreeNode> returnList = new ArrayList<JTreeNode>(); JTreeNode treeNode = null; for(int i=0;i < provinces.size();i++){ treeNode = new JTreeNode(provinces.get(i)); treeNode.setId(i+""); returnList.add(treeNode); } return returnList; } public static List<JTreeNode> getCityListByProID(String provinceId) { List<City> citys = new ArrayList<City>(); List<JTreeNode> returnList = new ArrayList<JTreeNode>(); JTreeNode treeNode = null; if(provinceId.equals("0")){ //北京市 citys.add(new City(provinceId,"海淀区")); citys.add(new City(provinceId,"东城区")); citys.add(new City(provinceId,"西城区")); }else if(provinceId.equals("1")){ //天津市 citys.add(new City(provinceId,"河东区")); citys.add(new City(provinceId,"河西区")); citys.add(new City(provinceId,"塘沽区")); }else if(provinceId.equals("2")){ //上海市 citys.add(new City(provinceId,"浦东新区")); citys.add(new City(provinceId,"黄浦区")); citys.add(new City(provinceId,"宝山区")); }else if(provinceId.equals("3")){ //重庆市 citys.add(new City(provinceId,"渝北区")); citys.add(new City(provinceId,"巫山县")); citys.add(new City(provinceId,"涪陵区")); }else if(provinceId.equals("4")){ //山东省 citys.add(new City(provinceId,"济南市")); citys.add(new City(provinceId,"青岛市")); citys.add(new City(provinceId,"烟台市")); citys.add(new City(provinceId,"潍坊市")); citys.add(new City(provinceId,"日照市")); citys.add(new City(provinceId,"聊城市")); }else if(provinceId.equals("5")){ //江苏省 citys.add(new City(provinceId,"南京市")); citys.add(new City(provinceId,"徐州市")); citys.add(new City(provinceId,"苏州市")); citys.add(new City(provinceId,"无锡市")); citys.add(new City(provinceId,"镇江市")); citys.add(new City(provinceId,"扬州市")); }else if(provinceId.equals("6")){ //浙江省 citys.add(new City(provinceId,"杭州市")); citys.add(new City(provinceId,"温州市")); citys.add(new City(provinceId,"宁波市")); citys.add(new City(provinceId,"绍兴市")); citys.add(new City(provinceId,"金华市")); citys.add(new City(provinceId,"衢州市")); }else if(provinceId.equals("7")){ //广东省 citys.add(new City(provinceId,"广州市")); citys.add(new City(provinceId,"深圳市")); citys.add(new City(provinceId,"珠海市")); citys.add(new City(provinceId,"东莞市")); citys.add(new City(provinceId,"惠州市")); citys.add(new City(provinceId,"肇庆市")); }else{ } for(int i=0;i < citys.size();i++){ treeNode = new JTreeNode(citys.get(i).getName()); treeNode.setId(i+""); returnList.add(treeNode); } return returnList; } }四、监听器
package com.jy.applet.day1206.swing.adapter; import javax.swing.JOptionPane; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreePath; import com.jy.applet.day1206.swing.tree.JTreeNode; public class MyTreeAdapter implements TreeSelectionListener { @Override public void valueChanged(TreeSelectionEvent e) { TreePath treePath = e.getNewLeadSelectionPath();// 例如[中国, 江苏省, 南京市] if (treePath != null) { // 返回路径上最底层的组件,对于树形结构,即叶子节点 // this will return an instance of TreeNode. JTreeNode node = (JTreeNode) treePath.getLastPathComponent(); StringBuilder sb = new StringBuilder(); sb.append("您选择的是:"); sb.append(node); sb.append("\r\n"); sb.append("路径为:"); sb.append(treePath); JOptionPane.showMessageDialog(null, sb, "提示", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, "您尚未选择省份或城市!", "错误", JOptionPane.ERROR_MESSAGE); } } }五、【效果如下】
- JavaSwing实现树形结构
- JavaSwing实现树形结构
- 树形结构的实现
- 树形结构的实现
- ajax实现树形结构
- JSP实现树形结构
- J2ME树形结构实现
- Java 实现树形结构
- 实现GridView树形结构
- 树形结构的实现
- 手动实现树形结构
- 树形结构递归实现
- js实现树形结构
- JavaSwing实现飞机大战
- WebLogic树形结构的实现
- DropDownList实现树形结构显示
- Django 树形结构实现方法
- Qt QTreeWidget 树形结构实现
- linux(debian) 下安装ample搭建局域网共享音乐服务器。
- Qt网络五子棋-服务器端
- Zend Studio 9.0. (系列)正式版注册破解
- 在Handler中获取用户的选择
- 04--java语句及数组
- JavaSwing实现树形结构
- 视频服务器架构设计
- PDF文件怎样解密
- Java Reference概念整理,初级
- 访问平台Servlet时,如何设置超时时间
- 系统架构领域的一些学习材料
- R4
- 会话超时
- R5