我從DefaultMutableTreeNode
對象構建一個JContentPane
顯示JTree
。樹意圖顯示本地文件系統。數據應該根據請求加載,因此當用戶想要擴展時。這很好,但只要節點中沒有子項目,它就會顯示一個文件圖標,並在插入子項目時變成文件夾圖標。DefaultMutableTreeNode圖標
雖然有(但沒有)子項目,但我怎樣才能使節點始終顯示文件夾圖標?
我從DefaultMutableTreeNode
對象構建一個JContentPane
顯示JTree
。樹意圖顯示本地文件系統。數據應該根據請求加載,因此當用戶想要擴展時。這很好,但只要節點中沒有子項目,它就會顯示一個文件圖標,並在插入子項目時變成文件夾圖標。DefaultMutableTreeNode圖標
雖然有(但沒有)子項目,但我怎樣才能使節點始終顯示文件夾圖標?
使用DefaultMutableTreeNode(或樹節點的自定義實現),該裝置區分文件從空文件夾是其allowsChildren屬性:
// 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)需要在構建樹後生效。
參見[*文件瀏覽器GUI *](http://codereview.stackexchange.com/q/4446/6692)。 – trashgod