自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解Swing中JTree組件的功能

開發(fā) 后端
本文介紹JTree組件的功能來自樹的概念,樹有分支和葉子。您在 Windows 中使用 IE 瀏覽器時,可能非常熟悉這個概念。

JTree組件是另外一個復(fù)雜組件,它不像 JTable 那樣難用,但是也不像 JList 那么容易。使用 JTree 時麻煩的部分是它要求的數(shù)據(jù)模型。

JTree組件的功能來自樹的概念,樹有分支和葉子。您在 Windows 中使用 IE 瀏覽器時,可能非常熟悉這個概念 —— 可以展開和折疊分支,顯示可以選擇和取消選擇的不同葉子。

您很有可能發(fā)現(xiàn)樹在應(yīng)用程序中不像表格或列表那樣有用,所以在 Internet 上沒有許多有幫助的這方面的示例。實際上,像 JTable 一樣,JTree 沒有什么入門級的功能。如果決定使用 JTree,那么立即就可以達到中級水平,當(dāng)然還必須學(xué)習(xí)隨之而來的概念。因此,示例應(yīng)用程序沒有介紹 JTree,所以也很不幸,不管是入門教程還是中級教程,都沒有涉及這個不太流行的組件。

但是,樹有一些時候是符合需求的合理的 UI 組件。文件/目錄系統(tǒng)就是一個示例(就像在 IE 瀏覽器中那樣),而且當(dāng)數(shù)據(jù)采取層次結(jié)構(gòu)的時候,也就是說數(shù)據(jù)采用樹的形式的時候,JTree組件就是***組件。

在 Swing 中,JTree組件看起來如下所示:

  1. import java.awt.Dimension;  
  2. import java.awt.Color;  
  3. import javax.swing.JFrame;  
  4. import javax.swing.JPanel;  
  5. import javax.swing.JScrollPane;  
  6. import javax.swing.JTree;  
  7. import javax.swing.BoxLayout;  
  8. import javax.swing.tree.TreePath;  
  9. import javax.swing.tree.DefaultMutableTreeNode;  
  10. import javax.swing.tree.DefaultTreeModel;  
  11. public class JTreeDemo  
  12. {  
  13. public static void main (String[] args)  
  14. {  
  15.  
  16. //構(gòu)造函數(shù):JTree()  
  17. JTree example1 = new JTree();  
  18.  
  19. //構(gòu)造函數(shù):JTree(Object[] value)  
  20. Object[] letters= {"a", "b", "c", "d", "e"};  
  21. JTree example2 = new JTree (letters);  
  22.  
  23. //構(gòu)造函數(shù):JTree(TreeNode root)(TreeNode空)  
  24. //用空結(jié)點創(chuàng)建樹  
  25. DefaultMutableTreeNode node1 = new DefaultMutableTreeNode();
  26. //定義樹結(jié)點  
  27. JTree example3 = new JTree (node1);
  28. //用此樹結(jié)點做參數(shù)調(diào)用 JTree的構(gòu)造函數(shù)創(chuàng)建含有一個根結(jié)點的樹  
  29.  
  30. //構(gòu)造函數(shù):JTree(TreeNode root)(同上,只是TreeNode非空)  
  31. //用一個根結(jié)點創(chuàng)建樹  
  32. DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Color");  
  33. JTree example4 = new JTree (node2);//結(jié)點不可以顏色,默認(rèn)為白面黑字  
  34. example4.setBackground (Color.lightGray);  
  35.  
  36. //構(gòu)造函數(shù):JTree(TreeNode root, boolean asksAllowsChildren)
    (同上,只是TreeNode又有不同)  
  37. //使用DefaultMutableTreeNode類先用一個根結(jié)點創(chuàng)建樹,
    設(shè)置為可添加孩子結(jié)點,再添加孩子結(jié)點  
  38. DefaultMutableTreeNode color = new DefaultMutableTreeNode
    ("Color", true);  
  39. DefaultMutableTreeNode gray = new DefaultMutableTreeNode 
    ("Gray");  
  40. color.add (gray);  
  41. color.add (new DefaultMutableTreeNode ("Red"));  
  42. gray.add (new DefaultMutableTreeNode ("Lightgray"));  
  43. gray.add (new DefaultMutableTreeNode ("Darkgray"));  
  44. color.add (new DefaultMutableTreeNode ("Green"));  
  45. JTree example5 = new JTree (color);  
  46.  
  47. //構(gòu)造函數(shù):JTree(TreeNode root)(同上,只是TreeNode非空)  
  48. //通過逐個添加結(jié)點創(chuàng)建樹  
  49. DefaultMutableTreeNode biology = new DefaultMutableTreeNode ("Biology");  
  50. DefaultMutableTreeNode animal = new DefaultMutableTreeNode ("Animal");  
  51. DefaultMutableTreeNode mammal = new DefaultMutableTreeNode ("Mammal");  
  52. DefaultMutableTreeNode horse = new DefaultMutableTreeNode ("Horse");  
  53. mammal.add (horse);  
  54. animal.add (mammal);  
  55. biology.add (animal);  
  56. JTree example6 = new JTree (biology);  
  57. horse.isLeaf();//if this node allows children.  
  58. horse.isRoot();//true if this node is the root of its tree  
  59.  
  60. //構(gòu)造函數(shù):JTree(TreeModel newModel)  
  61. //用DefaultMutableTreeNodel類定義一個結(jié)點再用這個結(jié)點做參數(shù)定義一個用DefaultTreeMode  
  62. //創(chuàng)建一個樹的模型,再用JTree的構(gòu)造函數(shù)創(chuàng)建一個樹  
  63.    
  64. DefaultMutableTreeNode root = new DefaultMutableTreeNode ("Root1");  
  65. DefaultMutableTreeNode child1 = new DefaultMutableTreeNode ("Child1");  
  66. DefaultMutableTreeNode child11 = new DefaultMutableTreeNode ("Child11");  
  67. DefaultMutableTreeNode child111 = new DefaultMutableTreeNode ("Child111");  
  68. DefaultMutableTreeNode child1111 = new DefaultMutableTreeNode ("Child1111");  
  69. root.add (child1); child1.add (child11); 
  70. child11.add (child111);child111.add(child1111);  
  71. DefaultTreeModel model = new DefaultTreeModel (root);  
  72. JTree example7 = new JTree (model);  
  73. JPanel panel = new JPanel();  
  74. panel.setLayout (new BoxLayout (panel, BoxLayout.X_AXIS));  
  75. panel.setPreferredSize (new Dimension (700, 400));  
  76. panel.add (new JScrollPane (example1));//JTree必須放在JScrollPane上  
  77. panel.add (new JScrollPane (example2));  
  78. panel.add (new JScrollPane (example3));  
  79. panel.add (new JScrollPane (example4));  
  80. panel.add (new JScrollPane (example5));  
  81. panel.add (new JScrollPane (example6));  
  82. panel.add (new JScrollPane (example7));  
  83.    
  84. JFrame frame = new JFrame ("JTreeDemo");  
  85. frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);  
  86. frame.setContentPane (panel);  
  87. frame.pack();  
  88. frame.show();  
  89.  }  

【編輯推薦】

  1. Swing SWT集成框架介紹
  2. 淺析Swing實現(xiàn)MDI的方法
  3. 概述Swing中的JApplet和JFrame
  4. 淺談Swing中的Metal觀感
  5. Swing動態(tài)刷新常用代碼
責(zé)任編輯:佚名 來源: 電子工業(yè)出版社
相關(guān)推薦

2009-07-10 18:06:59

JTree Swing

2012-01-17 14:05:29

JavaSwing

2009-07-10 12:30:12

Swing組件

2009-07-17 16:19:16

Swing核心組件

2009-07-10 10:19:57

JFormattedTSwing

2009-07-10 14:58:13

JLabel組件JFC和Swing

2009-07-16 10:11:06

渲染器RendererSwing組件

2009-07-14 17:21:42

Swing組件

2009-07-15 11:02:32

Swing組件

2009-07-10 16:29:32

Swing組件

2009-07-15 13:06:38

Swing組件

2009-07-10 13:20:37

Swing容器組件

2009-07-17 12:54:13

2009-07-09 11:55:17

Swing模型過濾

2009-07-17 17:00:20

JavaFX功能Swing

2009-07-17 14:57:41

SwingWorkerSwing程序

2012-01-17 13:46:55

JavaSwing

2009-06-30 15:18:10

StringBuildJava

2009-07-17 11:13:46

AWT和SwingSwing組件

2009-10-26 15:07:12

checkbox樹
點贊
收藏

51CTO技術(shù)棧公眾號