JTree实例

private void createTreeByXdDdt() {
DefaultComboBoxModel boxModel = (DefaultComboBoxModel) cmbXdDdt.getModel();
XdDdt xdDdt = (XdDdt) boxModel.getSelectedItem(); // 得到选中的调度台对象;
DefaultMutableTreeNode root = new DefaultMutableTreeNode(xdDdt); List<PLthDes> pLthDesList = getPLthDesListByLthid(xdDdt.getLth()); // 根据调度台获得p_lth_des对象集合
for (PLthDes pLthDes : pLthDesList) {
DefaultMutableTreeNode pLthDesNode = new DefaultMutableTreeNode(pLthDes);
List<PThNode> pThNodes = getPThNodesByIds(pLthDes.getLthid(),pLthDes.getThid()); // 根据p_lth_des获得p_th_node对象集合
for (PThNode pThNode : pThNodes) {
DefaultMutableTreeNode pThNodeTreeNode = new DefaultMutableTreeNode(pThNode);
pLthDesNode.add(pThNodeTreeNode);
}
root.add(pLthDesNode);
}
DefaultTreeModel treeModel = new DefaultTreeModel(root);
treeModel.addTreeModelListener(new TreeModelListener() {
@Override
public void treeStructureChanged(TreeModelEvent e) {
}
@Override
public void treeNodesRemoved(TreeModelEvent e) {
}
@Override
public void treeNodesInserted(TreeModelEvent e) {
}
@Override
public void treeNodesChanged(TreeModelEvent e) {
DefaultMutableTreeNode treeNode;
TreePath treePath = tree.getSelectionPath();
if(treePath!=null){
treeNode = (DefaultMutableTreeNode) treePath.getLastPathComponent();
Object userObject = treeNode.getUserObject();
System.out.println("TreeModelListener->"+userObject.getClass());
}else{
System.out.println("TreeModelListener->"+"treePath is null");
}
}
});
tree.setModel(treeModel); // 设置树的model
tree.setCellRenderer(new TreeRender()); // 设置树的渲染
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
MouseListener[] mouseListeners = tree.getMouseListeners();
System.out.println("mouseListeners:"+mouseListeners.length);
tree.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
DefaultMutableTreeNode treeNode;
// TreePath treePath = tree.getPathForLocation(e.getX(), e.getY()); // 这样的话,第二次不选中就会是null
TreePath treePath = tree.getSelectionPath(); // 这样的话,第二次不选中也会触发事件;
if(treePath!=null){
treeNode = (DefaultMutableTreeNode) treePath.getLastPathComponent();
Object userObject = treeNode.getUserObject();
System.out.println("MouseClick->"+userObject.getClass());
if(userObject instanceof PLthDes){
PLthDes pLthDes = (PLthDes) userObject;
System.out.println("MouseClick->"+pLthDes.getLthid()+":"+pLthDes.getThid());
}
}else{
System.out.println("MouseClick->"+"treePath is null");
}
}
});
MouseListener[] mouseListeners2 = tree.getMouseListeners();
System.out.println("mouseListeners2:"+mouseListeners2.length); TreeSelectionListener[] listeners = tree.getTreeSelectionListeners();
System.out.println("TreeSelectionListener:"+listeners.length);
tree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode treeNode;
TreePath treePath = tree.getSelectionPath();
if(treePath!=null){
treeNode = (DefaultMutableTreeNode) treePath.getLastPathComponent();
Object userObject = treeNode.getUserObject();
System.out.println("TreeSelectionListener->"+userObject.getClass());
}else{
System.out.println("TreeSelectionListener->"+"treePath is null");
}
}
});
TreeSelectionListener[] listeners2 = tree.getTreeSelectionListeners();
System.out.println("TreeSelectionListener2:"+listeners2.length); }

JTree实例的更多相关文章

  1. Swing组件Jtree,JTablePane选项卡运用

    今天开始写技术博客,说实话,本没有什么技术,说是总结也好,说是分享也罢,总之是想自己有意识的做一些事情,作为一名即将毕业的大学生,总是想以最好的状态,去面向社会,今天就是我准备好了的时候,本人将技术博 ...

  2. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  3. JTree实现好友列表

    最近学习了一下JTree的使用方法: 先来看一下树的实例: 构建一个树, DefaultMutableTreeNode root = new DefaultMutableTreeNode(" ...

  4. Java Swing 树状组件JTree的使用方法(转)

    树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识.展开 节点是一个非叶节点(由返回 false 的 TreeModel ...

  5. JTree实现QQ好友列表

    最近学习了一下JTree的使用方法: 先来看一下树的实例: 构建一个树, DefaultMutableTreeNode root = new DefaultMutableTreeNode(" ...

  6. js-静态、原型、实例属性

    本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...

  7. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  8. EntityFramework Core 1.1是如何创建DbContext实例的呢?

    前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguri ...

  9. redis集成到Springmvc中及使用实例

    redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...

随机推荐

  1. Android tcpdump抓包应用实现

    Android tcpdump抓包应用实现   Android应用很多时候都会涉及到网络,在请求网络出错时,我们可以通过抓包来分析网络请求,返回的数据等,通常我们是用tcpdump这个工具来抓包,再通 ...

  2. Android--->LinearLayout页面布局方式

    main.xml布局方式 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...

  3. python 打印类的属性、方法

    打印变量db的类(class):[root@fuel ~]# pythonPython 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)[GCC 4.4.7 2012 ...

  4. 解决Only the original thread that created a view hierarchy can touch its views

    这种异常出现在子线程中处理UI操作产生的异常,将UI操作放在主线程中就OK了

  5. java中的装饰设计模式,浅谈与继承之间的区别

    最初接触装饰设计模式,一直搞不懂这么做的意义是什么,看了网上很多的资料,对于与继承的区别并没有很清楚的分析,直到看到这篇博客:http://www.cnblogs.com/rookieFly-tdii ...

  6. c# 动态产生控件 注册动态控件事件

    用CheckEdit演示 其他控件类推 CheckEdit AllSele = new CheckEdit(); AllSele.Location = new System.Drawing.Point ...

  7. SQL复习五(索引)

    SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引 ...

  8. (简单) CF 44D Hyperdrive,数学。

    In a far away galaxy there are n inhabited planets, numbered with numbers from 1 to n. They are loca ...

  9. php中__clone() shallow copy 只是浅复制

    什么是浅复制呢? 简单一点,就是说复制一个对象的时候,如果对象$Obj的一个属性的类型是引用类型的,比如 $person这个属性,指向的是一个 叫做 $objPerson的一个引用, 那么复制$Obj ...

  10. 负载均衡 LVS+Keepalived

    系统  CentOS 5.6 X64 物理机 IP 10.10.10.104 Xen : 三台 CentOS 5.8 ip为: 10.10.10.106        10.10.10.107     ...