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. jQuery实现瀑布流(pc、移动通用)

    使用 jQuery 的 Masonry 插件来实现这种页面形式 1,分别下载 jQuery 与 Masonry ,然后把他们都加载到页面中使用. 加载代码: <script src=" ...

  2. PHP文件夹操作

    文件:文件+目录 判断文件类型: filetype("路径"); //返回一个字符串 is_dir("路径"); //如果是目录会返回true 判断文件是不是目 ...

  3. Ceph RBD CephFS 存储

    Ceph RBD  CephFS 存储 环境准备: (这里只做基础测试, ceph-manager , ceph-mon, ceph-osd 一共三台) 10.6.0.140 = ceph-manag ...

  4. zookeeper启动失败

    集群中3个节点,第一个started,第二个说Starting zookeeper ... already running as process xxxx,第三个说Starting zookeeper ...

  5. java中HashMap详解(转)

    java中HashMap详解 博客分类: JavaSE Java算法JDK编程生活       HashMap 和 HashSet 是 Java Collection Framework 的两个重要成 ...

  6. 搭建git服务器及利用git hook自动布署代码

    注意:服务器:Ubuntu Server 14.04,我的项目比较小,所有操作都使用root,建议最好新建一个用户(需要有管理员权限,否则在后面使用hooks自动部署代码时会出现各种权限问题,很蛋疼的 ...

  7. iOS下bound,center和frame

    本文转发至:http://www.xuebuyuan.com/1846606.html 在写程序的时候发现,iOS下的坐标.位置很容易弄乱,特别是在不同的坐标系统中,必须完成弄明白一些概念才能做相应的 ...

  8. nginx 生成 缩略图 and 生成缩略图到硬盘

    nginx  编译的时候增加  ./configure --with-http_image_filter_module 配置如下 server { listen     80; server_name ...

  9. iOS8学习笔记-构建多视图应用程序

    严格来说,凡是UIView的子类都可以称为视图,实际上IOS的图形界面就是视图包含视图的方案,绝大多数的控件都是UIView的子类,但是苹果公司定义的视图术语,通常是指具有相应视图控制器的uiview ...

  10. K-means算法简介

    K-means 算法是无监督的 聚类算法,算法简单,有效. K-means算法: 输入参数: 指定聚类数目 k,训练集 X 输出 : k 个聚类 算法描述: K-means 算法 是一个 迭代算法,每 ...