簡體   English   中英

DefaultMutableTreeNode圖標

[英]DefaultMutableTreeNode icon

我在從DefaultMutableTreeNode對象構建的JContentPane顯示了一個JTree 該樹旨在顯示本地文件系統。 數據應按要求加載,因此在用戶要擴展數據時應如此。 這很好用,但是只要節點中沒有子項,它就會顯示一個文件圖標,並在插入子項后變成文件夾圖標。

盡管還沒有子項,如何使節點始終顯示文件夾圖標?

您需要為樹實現單元格渲染器。 因此,您可以為節點定義圖標。 請參閱此處的表示例(樹也具有setCellRenderer方法)

使用DefaultMutableTreeNode(或TreeNode的自定義實現),將文件空文件夾區分開的方法是它的allowChildren屬性:

// get a list of files
File[] files = new File(".").listFiles();
// configure the nodes' allowsChildren as the isDir of the File object
for (File file : files) {
    root.add(new DefaultMutableTreeNode(file, file.isDirectory()));
}          
// configure the TreeModel to use nodes' allowsChildren property to
// decide on its leaf-ness
DefaultTreeModel model = new DefaultTreeModel(root, true);

我用這個:

DefaultMutableTreeNode root = new DefaultMutableTreeNode ();
DefaultTreeModel treeModel = new DefaultTreeModel (root);
tree = new JTree (treeModel);
addFiles (root);                            // build the catalog tree recursively
treeModel.setAsksAllowsChildren (true);     // allows empty nodes to appear as folders

if (file.isDirectory ())
  newNode.setAllowsChildren (true);

在addFiles()例程中。 setAsksAllowsChildren(true)需要在樹構建之后出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM