溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Swing中JTree組件的作用是什么

發(fā)布時(shí)間:2021-08-12 11:17:12 來(lái)源:億速云 閱讀:130 作者:Leah 欄目:編程語(yǔ)言

本篇文章給大家分享的是有關(guān)Swing中JTree組件的作用是什么,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

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

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

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

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

在 Swing 中,JTree組件看起來(lái)如下所示:

  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é)點(diǎn)創(chuàng)建樹(shù)  

  25. DefaultMutableTreeNode node1 = new DefaultMutableTreeNode();

  26. //定義樹(shù)結(jié)點(diǎn)  

  27. JTree example3 = new JTree (node1);

  28. //用此樹(shù)結(jié)點(diǎn)做參數(shù)調(diào)用 JTree的構(gòu)造函數(shù)創(chuàng)建含有一個(gè)根結(jié)點(diǎn)的樹(shù)  

  29.  

  30. //構(gòu)造函數(shù):JTree(TreeNode root)(同上,只是TreeNode非空)  

  31. //用一個(gè)根結(jié)點(diǎn)創(chuàng)建樹(shù)  

  32. DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Color");  

  33. JTree example4 = new JTree (node2);//結(jié)點(diǎn)不可以顏色,默認(rèn)為白面黑字  

  34. example4.setBackground (Color.lightGray);  

  35.  

  36. //構(gòu)造函數(shù):JTree(TreeNode root, boolean asksAllowsChildren)
    (同上,只是TreeNode又有不同)  

  37. //使用DefaultMutableTreeNode類先用一個(gè)根結(jié)點(diǎn)創(chuàng)建樹(shù),
    設(shè)置為可添加孩子結(jié)點(diǎn),再添加孩子結(jié)點(diǎn)  

  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. //通過(guò)逐個(gè)添加結(jié)點(diǎn)創(chuàng)建樹(shù)  

  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類定義一個(gè)結(jié)點(diǎn)再用這個(gè)結(jié)點(diǎn)做參數(shù)定義一個(gè)用DefaultTreeMode  

  62. //創(chuàng)建一個(gè)樹(shù)的模型,再用JTree的構(gòu)造函數(shù)創(chuàng)建一個(gè)樹(shù)  

  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.  }  

以上就是Swing中JTree組件的作用是什么,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI