疯狂JAVA讲义---第十二章:Swing编程(七)JTree树

Swing JTree的使用及常用方法、常用功能实现 JTree的使用及常用方法、实现本地文件树、实现下拉列表树、节点的拖拽功能实现等 阅读详情

树这东西给用户的感觉极为方便,但给程序员带来很大的麻烦,它是swing中最麻烦的控件之一。树要弄的好非常麻烦,图标的美化,层次的划分,各种事件的处理。。。对于初学者来说,就不要太讲究样式,下面举个粗糙的例子,eg

[c-sharp] view plain copy print ?
  1. public class SimpleJTree   
  2. { 
  3.     JFrame jf = new JFrame("简单树"); 
  4.  
  5.     JTree tree; 
  6.     //定义几个初始节点 
  7.     DefaultMutableTreeNode root = new DefaultMutableTreeNode("中国");  
  8.     DefaultMutableTreeNode guangdong = new DefaultMutableTreeNode("广东"); 
  9.     DefaultMutableTreeNode guangxi = new DefaultMutableTreeNode("广西"); 
  10.     DefaultMutableTreeNode foshan = new DefaultMutableTreeNode("佛山"); 
  11.     DefaultMutableTreeNode shantou = new DefaultMutableTreeNode("汕头"); 
  12.     DefaultMutableTreeNode guilin = new DefaultMutableTreeNode("桂林"); 
  13.     DefaultMutableTreeNode nanning = new DefaultMutableTreeNode("南宁"); 
  14.  
  15.     public void init() 
  16.     { 
  17.         //通过add方法建立树节点之间的父子关系 
  18.         guangdong.add(foshan); 
  19.         guangdong.add(shantou); 
  20.         guangxi.add(guilin); 
  21.         guangxi.add(nanning); 
  22.         root.add(guangdong); 
  23.         root.add(guangxi); 
  24.         //以根节点创建树 
  25.         tree = new JTree(root); 
  26.  
  27.         //默认连线 
  28.         //tree.putClientProperty("JTree.lineStyle" , "Angeled"); 
  29.         //没有连线 
  30.         tree.putClientProperty("JTree.lineStyle" , "None"); 
  31.         //水平分隔线 
  32.         //tree.putClientProperty("JTree.lineStyle" , "Horizontal");  
  33.  
  34.  
  35.         //设置是否显示根节点的“展开/折叠”图标,默认是false 
  36.         tree.setShowsRootHandles(true); 
  37.         //设置节点是否可见,默认是true 
  38.         tree.setRootVisible(true); 
  39.  
  40.         jf.add(new JScrollPane(tree)); 
  41.         jf.pack(); 
  42.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  43.         jf.setVisible(true); 
  44.     } 
  45.  
  46.     public static void main(String[] args)  
  47.     { 
  48.         new SimpleJTree().init(); 
  49.     } 
  50. } 

拖动,编辑树节点也是树的基本功能,下面就在上面例子的基础上,加上这些功能,eg

  1. public class EditJTree 
  2. { 
  3.     JFrame jf; 
  4.  
  5.     JTree tree; 
  6.     //上面JTree对象对应的model 
  7.     DefaultTreeModel model; 
  8.      
  9.     //定义几个初始节点 
  10.     DefaultMutableTreeNode root = new DefaultMutableTreeNode("中国");  
  11.     DefaultMutableTreeNode guangdong = new DefaultMutableTreeNode("广东"); 
  12.     DefaultMutableTreeNode guangxi = new DefaultMutableTreeNode("广西"); 
  13.     DefaultMutableTreeNode foshan = new DefaultMutableTreeNode("佛山"); 
  14.     DefaultMutableTreeNode shantou = new DefaultMutableTreeNode("汕头"); 
  15.     DefaultMutableTreeNode guilin = new DefaultMutableTreeNode("桂林"); 
  16.     DefaultMutableTreeNode nanning = new DefaultMutableTreeNode("南宁"); 
  17.  
  18.     //定义需要被拖动的TreePath 
  19.     TreePath movePath; 
  20.  
  21.     JButton addSiblingButton = new JButton("添加兄弟节点"); 
  22.     JButton addChildButton = new JButton("添加子节点"); 
  23.     JButton deleteButton = new JButton("删除节点"); 
  24.     JButton editButton = new JButton("编辑当前节点"); 
  25.  
  26.     public void init() 
  27.     { 
  28.         guangdong.add(foshan); 
  29.         guangdong.add(shantou); 
  30.         guangxi.add(guilin); 
  31.         guangxi.add(nanning); 
  32.         root.add(guangdong); 
  33.         root.add(guangxi); 
  34.          
  35.         jf = new JFrame("树"); 
  36.         tree = new JTree(root); 
  37.         //获取JTree对应的TreeModel对象 
  38.         model = (DefaultTreeModel)tree.getModel(); 
  39.         //设置JTree可编辑 
  40.         tree.setEditable(true); 
  41.         MouseListener ml = new MouseAdapter()  
  42.         { 
  43.             //按下鼠标时候获得被拖动的节点 
  44.             public void mousePressed(MouseEvent e) 
  45.             { 
  46.                 //如果需要唯一确定某个节点,必须通过TreePath来获取。 
  47.                 TreePath tp = tree.getPathForLocation(e.getX(), e.getY()); 
  48.                 if (tp != null) 
  49.                 { 
  50.                     movePath = tp; 
  51.                 } 
  52.             } 
  53.             //鼠标松开时获得需要拖到哪个父节点 
  54.             public void mouseReleased(MouseEvent e) 
  55.             { 
  56.                 //根据鼠标松开时的TreePath来获取TreePath 
  57.                 TreePath tp = tree.getPathForLocation(e.getX(), e.getY()); 
  58.  
  59.                 if (tp != null && movePath != null) 
  60.                 { 
  61.                     //阻止向子节点拖动 
  62.                     if (movePath.isDescendant(tp) && movePath != tp) 
  63.                     { 
  64.                         JOptionPane.showMessageDialog(jf, "目标节点是被移动节点的子节点,无法移动!",  
  65.                             "非法操作", JOptionPane.ERROR_MESSAGE ); 
  66.                         return; 
  67.                     } 
  68.                     //既不是向子节点移动,而且鼠标按下、松开的不是同一个节点 
  69.                     else if (movePath != tp) 
  70.                     { 
  71.                         System.out.println(tp.getLastPathComponent()); 
  72.                         //add方法可以先将原节点从原父节点删除,再添加到新父节点中 
  73.                         ((DefaultMutableTreeNode)tp.getLastPathComponent()).add( 
  74.                             (DefaultMutableTreeNode)movePath.getLastPathComponent()); 
  75.                         movePath = null; 
  76.                         tree.updateUI(); 
  77.                     } 
  78.                 } 
  79.             } 
  80.         }; 
  81.         tree.addMouseListener(ml); 
  82.  
  83.         JPanel panel = new JPanel(); 
  84.  
  85.         addSiblingButton.addActionListener(new ActionListener() 
  86.         { 
  87.             public void actionPerformed(ActionEvent event) 
  88.             { 
  89.                 //获取选中节点 
  90.                 DefaultMutableTreeNode selectedNode 
  91.                     = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); 
  92.                 //如果节点为空,直接返回 
  93.                 if (selectedNode == null) return; 
  94.                 //获取该选中节点的父节点 
  95.                 DefaultMutableTreeNode parent 
  96.                     = (DefaultMutableTreeNode)selectedNode.getParent(); 
  97.                 //如果父节点为空,直接返回 
  98.                 if (parent == null) return; 
  99.                 //创建一个新节点 
  100.                 DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("新节点"); 
  101.                 //获取选中节点的选中索引 
  102.                 int selectedIndex = parent.getIndex(selectedNode); 
  103.                 //在选中位置插入新节点 
  104.                 model.insertNodeInto(newNode, parent, selectedIndex + 1); 
  105.                 //--------下面代码实现显示新节点(自动展开父节点)------- 
  106.                 //获取从根节点到新节点的所有节点 
  107.                 TreeNode[] nodes = model.getPathToRoot(newNode); 
  108.                 //使用指定的节点数组来创建TreePath 
  109.                 TreePath path = new TreePath(nodes); 
  110.                 //显示指定TreePath 
  111.                 tree.scrollPathToVisible(path); 
  112.             } 
  113.         }); 
  114.         panel.add(addSiblingButton); 
  115.  
  116.         addChildButton.addActionListener(new ActionListener() 
  117.         { 
  118.             public void actionPerformed(ActionEvent event) 
  119.             { 
  120.                 //获取选中节点 
  121.                 DefaultMutableTreeNode selectedNode 
  122.                     = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); 
  123.                 //如果节点为空,直接返回 
  124.                 if (selectedNode == null) return; 
  125.                 //创建一个新节点 
  126.                 DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("新节点"); 
  127.                 //直接通过model来添加新节点,则无需通过调用JTree的updateUI方法 
  128.                 //model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount()); 
  129.                 //直接通过节点添加新节点,则需要调用tree的updateUI方法 
  130.                 selectedNode.add(newNode); 
  131.                 //--------下面代码实现显示新节点(自动展开父节点)------- 
  132.                 TreeNode[] nodes = model.getPathToRoot(newNode); 
  133.                 TreePath path = new TreePath(nodes); 
  134.                 tree.scrollPathToVisible(path); 
  135.                 tree.updateUI(); 
  136.             } 
  137.         }); 
  138.         panel.add(addChildButton); 
  139.  
  140.         deleteButton.addActionListener(new ActionListener() 
  141.         { 
  142.             public void actionPerformed(ActionEvent event) 
  143.             { 
  144.                 DefaultMutableTreeNode selectedNode 
  145.                     = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); 
  146.                 if (selectedNode != null && selectedNode.getParent() != null) 
  147.                 { 
  148.                     //删除指定节点 
  149.                     model.removeNodeFromParent(selectedNode); 
  150.                 } 
  151.             } 
  152.         }); 
  153.         panel.add(deleteButton); 
  154.  
  155.         editButton.addActionListener(new ActionListener() 
  156.         { 
  157.             public void actionPerformed(ActionEvent event) 
  158.             { 
  159.                 TreePath selectedPath = tree.getSelectionPath(); 
  160.                 if (selectedPath != null) 
  161.                 { 
  162.                     //编辑选中节点 
  163.                     tree.startEditingAtPath(selectedPath); 
  164.                 } 
  165.             } 
  166.         }); 
  167.         panel.add(editButton); 
  168.  
  169.         jf.add(new JScrollPane(tree)); 
  170.         jf.add(panel , BorderLayout.SOUTH); 
  171.         jf.pack(); 
  172.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  173.         jf.setVisible(true); 
  174.     } 
  175.  
  176.     public static void main(String[] args)  
  177.     { 
  178.         new EditJTree().init(); 
  179.     } 
  180. } 

最后讲下如何修饰tree的图标,主要是通过拓展TreeCellRenderer来实现,eg

  1. public class ExtendsDefaultTreeCellRenderer   
  2. { 
  3.     JFrame jf = new JFrame("根据节点类型定义图标"); 
  4.  
  5.     JTree tree; 
  6.     //定义几个初始节点 
  7.     DefaultMutableTreeNode root = new DefaultMutableTreeNode( 
  8.         new NodeData(DBObjectType.ROOT , "数据库导航"));  
  9.     DefaultMutableTreeNode salaryDb = new DefaultMutableTreeNode( 
  10.         new NodeData(DBObjectType.DATABASE , "公司工资数据库")); 
  11.     DefaultMutableTreeNode customerDb = new DefaultMutableTreeNode( 
  12.         new NodeData(DBObjectType.DATABASE , "公司客户数据库")); 
  13.     //定义salaryDb的两个子节点 
  14.     DefaultMutableTreeNode employee = new DefaultMutableTreeNode( 
  15.         new NodeData(DBObjectType.TABLE , "员工表")); 
  16.     DefaultMutableTreeNode attend = new DefaultMutableTreeNode( 
  17.         new NodeData(DBObjectType.TABLE , "考勤表")); 
  18.     //定义customerDb的一个子节点 
  19.     DefaultMutableTreeNode contact = new DefaultMutableTreeNode( 
  20.         new NodeData(DBObjectType.TABLE , "联系方式表")); 
  21.  
  22.     //定义employee的三个子节点 
  23.     DefaultMutableTreeNode id = new DefaultMutableTreeNode( 
  24.         new NodeData(DBObjectType.INDEX , "员工ID")); 
  25.     DefaultMutableTreeNode name = new DefaultMutableTreeNode( 
  26.         new NodeData(DBObjectType.COLUMN , "姓名")); 
  27.     DefaultMutableTreeNode gender = new DefaultMutableTreeNode( 
  28.         new NodeData(DBObjectType.COLUMN , "性别")); 
  29.  
  30.     public void init()throws Exception 
  31.     { 
  32.         //通过add方法建立树节点之间的父子关系 
  33.         root.add(salaryDb); 
  34.         root.add(customerDb); 
  35.         salaryDb.add(employee); 
  36.         salaryDb.add(attend); 
  37.         customerDb.add(contact); 
  38.         employee.add(id); 
  39.         employee.add(name); 
  40.         employee.add(gender); 
  41.         //以根节点创建树 
  42.         tree = new JTree(root); 
  43.          
  44.         //设置该JTree使用自定义的节点绘制器 
  45.         tree.setCellRenderer(new MyRenderer()); 
  46.      
  47.         //设置是否显示根节点的“展开/折叠”图标,默认是false 
  48.         tree.setShowsRootHandles(true); 
  49.         //设置节点是否可见,默认是true 
  50.         tree.setRootVisible(true); 
  51.  
  52.         //设置使用Windows风格外观 
  53.         UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
  54.         //更新JTree的UI外观 
  55.         SwingUtilities.updateComponentTreeUI(tree); 
  56.  
  57.         jf.add(new JScrollPane(tree)); 
  58.         jf.pack(); 
  59.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  60.         jf.setVisible(true); 
  61.     } 
  62.  
  63.     public static void main(String[] args) throws Exception 
  64.     { 
  65.         new ExtendsDefaultTreeCellRenderer().init(); 
  66.     } 
  67. } 
  68. //定义一个NodeData类,用于封装节点数据 
  69. class NodeData 
  70. { 
  71.     public int nodeType; 
  72.     public String nodeData; 
  73.     public NodeData(int nodeType , String nodeData) 
  74.     { 
  75.         this.nodeType = nodeType; 
  76.         this.nodeData = nodeData; 
  77.     } 
  78.     public String toString() 
  79.     { 
  80.         return nodeData; 
  81.     } 
  82. } 
  83. //定义一个接口,该接口里包含数据库对象类型的常量 
  84. interface DBObjectType 
  85. { 
  86.     int ROOT = 0; 
  87.     int DATABASE = 1; 
  88.     int TABLE = 2; 
  89.     int COLUMN = 3; 
  90.     int INDEX = 4; 
  91. } 
  92. class MyRenderer extends DefaultTreeCellRenderer 
  93. { 
  94.     //初始化5个图标 
  95.     ImageIcon rootIcon = new ImageIcon("icon/root.gif"); 
  96.     ImageIcon databaseIcon = new ImageIcon("icon/database.gif"); 
  97.     ImageIcon tableIcon = new ImageIcon("icon/table.gif"); 
  98.     ImageIcon columnIcon = new ImageIcon("icon/column.gif"); 
  99.     ImageIcon indexIcon = new ImageIcon("icon/index.gif"); 
  100.  
  101.     public Component getTreeCellRendererComponent(JTree tree, Object value, 
  102.         boolean sel, boolean expanded,  boolean leaf, int row, boolean hasFocus) 
  103.     { 
  104.         //执行父类默认的节点绘制操作 
  105.         super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); 
  106.  
  107.         DefaultMutableTreeNode node = (DefaultMutableTreeNode)value; 
  108.         NodeData data = (NodeData)node.getUserObject(); 
  109.         //根据数据节点里的nodeType数据决定节点图标 
  110.         ImageIcon icon = null; 
  111.         switch(data.nodeType) 
  112.         { 
  113.             case DBObjectType.ROOT: 
  114.                 icon = rootIcon; 
  115.                 break; 
  116.             case DBObjectType.DATABASE: 
  117.                 icon = databaseIcon; 
  118.                 break; 
  119.             case DBObjectType.TABLE: 
  120.                 icon = tableIcon; 
  121.                 break; 
  122.             case DBObjectType.COLUMN: 
  123.                 icon = columnIcon; 
  124.                 break; 
  125.             case DBObjectType.INDEX: 
  126.                 icon = indexIcon; 
  127.                 break; 
  128.         } 
  129.         //改变图标 
  130.         this.setIcon(icon); 
  131.         return this; 
  132.     } 
  133. } 

原文链接:http://blog.youkuaiyun.com/terryzero/article/details/3828045

 

java swing-jtree的用法 JTree上的每一个节点就代表一个TreeNode对象,TreeNode本身是一个Interface,里面定义了7个有关节点的方法,例如判断是否 为树叶节点、有几个子节点(getChildCount())、父节点为何(getparent())等等、这些方法的定义你可以在javax.swing.tree的 package中找到,读者可自行查阅java api文件。在实际的应用上,一般我们不会直接实作此界面,而是采用java所提供的 DefaultMutableTreeMode类,此类是实作MutableTreeNode界面而来,并提供了其他许多实用的方法。MutableTreeNode本身也是一 个Interface,且继承了TreeNode界面此类主要是定义一些节点的处理方式,例如新增节点(insert())、删除节点(remove())、设置 立即下载

相关推荐

Java Swing树状组件JTree用法实例详解

主要介绍了Java Swing树状组件JTree用法,结合具体实例形式分析了Swing组件JTree构成树状列表的节点设置与事件响应,以及自定义图形节点的相关操作技巧,需要的朋友可以参考下

关于Jtree初始化时展开到指定路径层级的实现方式

** 关于Jtree初始化时展开到指定路径层级的实现方式 ** 1.首先获取最下层需要展开的节点致根节点的关系结构(及parent.add(child)的迭代) 2.通过defaulttreemodel(root)获取model对象 3.model.getpathtoroot(root)获取一系列treenode[]数组对象 4.treepath=new treePath(treenode[]) 5.jtree.expandPath(treepath); ...

weixin_42224554的博客 446

Pixel 6 Pro刷Android 13变砖自救指南:fastboot全分区擦除与手动刷入教程

本文提供了一份详细的Pixel 6 Pro在Android 13升级过程中变砖后的自救指南。针对因super分区锁死或动态分区异常导致的无法启动问题,文章核心介绍了通过fastboot命令手动擦除关键分区并逐一刷入官方镜像的完整救砖流程,帮助用户实现系统重建与恢复。

weixin_29208327的博客 371

Java Swing桌面应用开发-组件-树形结构(JTree)

1:硬编码方式创建Tree 代码实现: package Swing; /** * 硬编码树型结构:Tree型结构不能改变 * */ import java.awt.Container; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax....

hujyhfwfh2的博客 2970

Codesys电子凸轮Cam表实战:从可视化配置到程序化构建

本文详细介绍了Codesys电子凸轮Cam表的实战应用,从可视化配置到程序化构建的全过程。通过包装机和印刷机案例,解析Cam表的基础设置、调试技巧及动态构建方法,帮助工程师快速掌握电子凸轮技术,提升运动控制精度和效率。

weixin_29309785的博客 298

忘记安卓锁屏密码怎么办?3种方法教你用ADB恢复访问(含gesture.key解密)

本文详细解析了安卓设备锁屏密码的存储与加密机制,特别是gesture.key文件的解密原理。针对遗忘密码的常见问题,提供了三种核心恢复方法:利用ADB调试接口删除密码文件、对gesture.key进行离线分析与解密,以及应对高版本系统的替代方案。重点介绍了通过ADB工具在Recovery模式下操作的具体步骤,帮助用户在合法合规前提下恢复设备访问权限。

php55的博客 958

Java Swing组件:树

树是一种使用非常广泛的数据结构,在Swing中,使用JTree来创建树结构,树的设计采用了MVC模式,其中,JTree对象并没有包含实际的数据,它只是提供了数据的一个视图,对应的数据存储在树的数据模型中。在Swing中,树的数据模型采用TreeModel接口实现类的对象来管理。在实际应用中,一般使用DefaultTreeModel对象来管理树的数据模型。

hitmengfanchao的博客 1659

qt使用qxlsx实现xlsx、xls表格文件快速写入和读取

新年第二篇文章,收尾一个去年计划中发表文章和实现功能。

kbq的博客 1万+

swing快速入门(四十二)JTree的基本创建

注释很详细,直接上代码……

https://github.com/amoorzheyu 787

芒果YOLOv5改进107:ARConv自适应旋转卷积,全网首发 | 即插即用:以增强其表征能力,从而准确检测方向物体,ICCV顶会论文idea

ARConv自适应旋转卷积,全网首发 | 即插即用:以增强其表征能力,从而准确检测方向物体,ICCV顶会论文idea

包括YOLOv5、YOLOv7、YOLOv8等模型改进 956

HandwrittenMathFormulaRecognition:基于YOLOv8的手写数学公式识别系统

输入:包含手写数学公式的图像(拍摄的板书、作业纸等)输出:对应的数字文本形式的数学公式(如LaTeX格式或文本表达式)标准的手写数学表达式数据集,包含在线轨迹及图片,广泛用于公式识别研究。包含近10万对公式图片及对应的LaTeX标注,适合训练公式识别模型。MathBrush公开手写数学公式图像数据集,含多种书写风格。手写数字与符号数据集(MNIST及其扩展)用于基础数学符号的训练。

YOLO 283

swing_树_JTree概述

swing_树_JTree概述以及如何创建树和对结点的修改

qq_52629349的博客 677

SAP 系统和银行系统通过 SM2 加密算法进行集成

SM2 是基于椭圆曲线离散对数问题(ECDLP)的一种公钥密码算法。椭圆曲线加密的核心原理,是利用了一个数学难题:在椭圆曲线群上,已知曲线上两点的运算结果,逆向推导出这两个点的具体信息是非常困难的。这样的复杂度使得基于椭圆曲线的密码体制比传统的 RSA 更加难以破解。在 SM2 加密中,公钥和私钥的生成与传统的椭圆曲线加密类似。选择一个椭圆曲线和一个基点 P。使用私钥 d,计算公钥 P’ = d * P。私钥 d 保密,而公钥 P’ 可公开分发,用于加密数据。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1211

疯狂JAVA讲义---第十二章:Swing编程(八)JTable表格

表格是GUI编程中使用较多,但也是最麻烦的一个控件之一。表格是用来显示二维数据,提供编辑,选择等功能。如果只是显示数据,这还是非常easy的,只要在JTable中传入二维数组或集合就可以了,egpublic class SimpleTable{ JFrame jf = new JFrame("简单表格"); JTable table; //定义二维数组作为表格数据 Obje

TERRY的技术日志 9826

Python + Playwright:集成 Applitools 进行视觉回归测试(快速入门)

Applitools是一款基于人工智能的视觉验证测试工具,专门用于自动化和验证应用程序的用户界面(UI);Applitools使用视觉回归测试来检测应用程序界面的变化,确保 UI 在不同版本之间的一致性;Applitools的核心功能是通过视觉比较,检测 UI 元素的差异,而无需手动编写复杂的界面检查代码;通过集成Applitools,测试人员可以轻松捕捉和验证界面中的视觉差异,无论是在Web移动端或桌面应用的测试环境;

blues_C的博客 2920

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java -Swing-学习笔记

Java -Swing-学习笔记 文章目录Java -Swing-学习笔记1. 基本组件2. 特殊容器2.1 JSplitPane2.2 JTabbedPane2.3 JLayeredPane、JDesktopPane、JInternalFrame3.拖放功能4.Java7新增的Swing功能4.1 用JLayer装饰组件4.2 透明、不规则形状窗口5.用JProgressBar、P...

xhh22900的博客 511

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java swing jtree_Java Swing中的JTree模型 - hitop0609 - 优快云博客

Java Swing中的JTree模型2009-01-04 10:40本文介绍Java Swing中的JTree模型,介绍如何创建、修改、遍历,设置树。参考Core Java2相关章节及其源代码。Swing树使用人们所熟悉的文件夹和树叶图来显示分层的数据。树由节点组成,节点可以是文件夹,也可以是树叶。文件夹可以有子节点,除根节点之外的所有节点都只有一个父节点。空的文件夹与树叶的不同之处就在于它允许...

weixin_34404808的博客 628

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[Java]Swing树状组件JTree

一 简单样式 TreeNodeDemo.java package com.sjf; import javax.swing.JFrame; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; impo...

SmartSi 538

Java图形化界面编程超详细知识点(9)——Swing_树

6 JTree、TreeModel实现树 树也是图形用户界面使用十分广泛的GUI组件,例如使用Windows资源管理器时,将看到如下图的目录树: 如上图所示的树,代表计算机世界里的树,它从自然界中的树抽象而来。计算机世界里的树是由一系列具有严格父子关系的节点组成的,每个节点既可以是其上一级节点的子节点,也可以是下一级节点的父节点,因此同一个节点既可以是父节点,也可以是子节点。 按照节点是否包含子节点,可把节点分为两类: 普通节点:包含子节点的节点;...

m0_66908465的博客 3379

Java Swing JTree:树组件

1 JTree 树组件 Swing 使用 JTree 类实现树,它的主要功能是把数据按照树状进行显示,其数据来源于其他对象。JTree 树中最基本的对象叫作节点,表示在给定层次结构中的数据项。树以垂直方式显示数据,每行显示一个节点。树中只有一个根节点,所有其他节点从这里引出。除根节点外,其他节点分为两类:一类是代子节点的分支节点,另一类是不带子节点的叶节点。 1.1 JTree 类的常用构造方...

书香水墨 3367

java swing jtree_Java Swing树状组件JTree用法实例详解

本文实例讲述了Java Swing树状组件JTree用法。分享给大家供大家参考,具体如下:一、简单样式先看运行效果:TreeNodeDemo.javapackage awtDemo;import javax.swing.JFrame;import javax.swing.JTree;import javax.swing.event.TreeSelectionEvent;import javax.s...

weixin_32408723的博客 891

Java-swing树状图(JTree)

登录界面 主界面 添加界面: 代码: 1、af-swing为自己定义的布局(封装了),下方提供下载链接..... 2、数据来源于place.txt,这个可以随意更改(一行代表一个数据) 3、用到的技术:JTree,背景图片的绘制,文件的读取以及自定义解析 4、功能,左上角当前用户的显示,左下角当前时间的显示及实时更新,添加功能,查询功能,城市信息的显示功能,数据...

给你更好的 2924

Java Swing 如何使用JTree(1)

Java Swing 如何使用JTree

征途 的博客 3302

JTree创建树

普通节点:包含子节点的节点,具有唯一父节点的节点 叶子结点:没有子节点的节点,因此叶子结点不可作为父节点 根节点:没有父节点的节点,根节点不可作为子节点 创建树 当一个节点具有子节点的两种状态 展开状态:当父节点处于展开状态时,其子节点是可见的 折叠状态:当父节点处于折叠状态时,其子节点都是不可见的 JTree常用构造器 JTree(TreeModel newModel):使用指定的数...

superzhangshuo的博客 712

java DefaultMutableTreeNode 树形结构 目录 1. Tree的概念 1 1.1. treeNode接口,mutabletreenode接口 1 1.2. 10-4:以T

java DefaultMutableTreeNode   树形结构   目录 1. Tree的概念 1 1.1. treeNode接口,mutabletreenode接口 1 1.2. 10-4:以TreeModel构造JTree. 1 2. 功能要求 2 2.1. 树形结构节点的查找与定位 2 3. 节点: DefaultMutableTreeNode 2 3.1. 3. 路...

attilax的专栏 9178
上一篇: eclipse导入工程出现Access restriction: The type XX is not accessible due to restriction on required
下一篇: 鼠标监听
kejiaming
博客等级 码龄15年 19粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值