JavaSwing实现树形结构
2013-12-06 13:53
495 查看
一、Applet
二、主面板
三、用来模拟数据库的DAO
四、监听器
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);
}
}
}
五【效果如下】
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实现树形结构
- [Swing]树形结构的实现
- Java 实现树形结构
- java、js中实现无限层级的树形结构(类似递归)
- java实现文件夹的遍历(树形结构)
- java、js中实现无限层级的树形结构(类似递归)
- java、js中实现无限层级的树形结构(类似递归)
- Java递归实现删除树形结构的任一节点
- java实现遍历文件目录,并在控制台以树形结构展示搜索出来的文件
- Java、JS中实现无限层级的树形结构(类似递归)
- 递归删除树形结构的所有子节点(java和mysql实现)
- 【java基础 3】树形结构数据呈现的递归算法实现
- 【java基础 3】树形结构数据呈现的递归算法实现
- Json树形结构数据转Java对象并存储到数据库的实现-超简单的JSON复杂数据处理 .
- java、js中实现无限层级的树形结构方法(类似递归)
- 【java基础 4】树形结构数据呈现的非递归算法(循环)实现
- 【java基础 4】树形结构数据呈现的非递归算法(循环)实现
- 使用递归删除树形结构的所有子节点(java和mysql实现)
- Java实现通过递归遍历树形结构
- JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现