2014-09-02 177 views
-1

我想創建一個JCheckBox的選擇驅動器資源管理器將顯示使用的JTree就像爲Windows文件瀏覽器的計算機的所有驅動器,文件夾和文件:驅動器資源管理器使用的JTree

enter image description here

這一點我這樣做:

enter image description here

public class NewJFrame extends javax.swing.JFrame { 

    DefaultMutableTreeNode nodes; 
    public NewJFrame() { 
     nodes = new DefaultMutableTreeNode("Root", true); 
     addRoots(nodes); 
     initComponents(); 
     jTree1.setRootVisible(false); 

    } 

    public void addRoots(DefaultMutableTreeNode parent){ 
     File roots[] = File.listRoots(); 
     for(File root: roots){ 
      DefaultMutableTreeNode child = new DefaultMutableTreeNode(root); 
      child.add(new DefaultMutableTreeNode("test")); 
      parent.add(child); 
     } 
    } 

    private void initComponents() { 

     jScrollPane1 = new javax.swing.JScrollPane(); 
     jTree1 = new javax.swing.JTree(nodes); 
     //....... 
     //....... 
    } 

}

+0

您的問題是什麼? – StanislavL 2014-09-02 11:06:11

+2

請參閱@AndrewThompson的[FileBrowser](http://codereview.stackexchange.com/questions/4446/file-browser-gui)從一些想法。並且請_do_實際提出一個問題,因爲這是一個問答網站。您的帖子似乎更像是一個個人的願望,而不是實際的問題 – 2014-09-02 11:11:02

+0

如果我在創建樹的所有節點後創建JTree,則需要太多時間。像5個munites。我想動態創建它。當有人點擊C:\時,只有它會動態添加C:\下的所有目錄和文件。 – AM26 2014-09-02 11:12:19

回答

0

爲了解決您的問題(動態添加節點 - >在評論中描述),您可以使用虛擬節點和TreeListener。
虛擬節點(在這種情況下)用於假的現有的孩子。
在TreeNodeExpand-Event中,您可以檢查展開的節點是否只有一個虛擬孩子,然後您可以即時創建REAL子節點。

這意味着,對於您獲得的每個文件夾,您將創建一個新節點,其中包含一個DUMMY子節點(用於僞造現有子節點)。 然後,展開時,刪除虛擬節點並添加REAL節點。 (與您獲取當前目錄的所有文件夾相同)