2011-05-07 130 views
1

我有一個JTree真正的難題。JTree擴大節點擴展的寬度

我已經實現了JTree與自寫模型(這是從TreeModel擴展)。

fileSystemModel = new MyModel(new File(directory)); 
    fileTree = new JTree(fileSystemModel); 
    fileTree.setEditable(true); 
    fileTree.setDragEnabled(true); 
    fileTree.addTreeSelectionListener(new TreeSelectionListener() { 

     public void valueChanged(TreeSelectionEvent event) { 
      File file = (File) fileTree.getLastSelectedPathComponent(); 
     } 
    }); 

因此,我將它添加到JPanel,並將此JPanel添加到JFrame。

不,我得到這個問題:我開始幀,如果我展開一個節點,JTree的寬度將擴大到顯示葉子所需的寬度。

我試圖設置此:

fileTree.setMaximumSize(width, height); 

但它失敗了,我也試圖JTree的使嵌入到JScrollPanel具有最大尺寸,並且這也失敗了。

JTree仍在調整其寬度需要多少。

所以我現在試了兩天,沒有找到任何東西,所以如果你們中的某個人能夠幫助我,我會很高興。

謝謝!

+0

默認佈局? – trashgod 2011-05-07 17:13:08

+0

我必須將此JPanel嵌入到JSplitPane – Benni 2011-05-07 18:00:47

+0

我必須將此JPanel嵌入到具有GridBagLayout的JSplitPane中。我現在試着啓動一個默認的JFrame,並且只嵌入了我的JPanel並且它可以工作。但它在JSplitPane框架中不起作用... – Benni 2011-05-07 18:06:31

回答

2

所述效果是JPanel的默認FlowLayout的特徵。當您點擊左側面板時,您可以看到更改是example

附錄:如example所示,GridLayout允許組件擴展;它在setVisibleRowCount()後跟pack()的情況下效果特別好。

+0

非常感謝!有用! – Benni 2011-05-08 12:11:28

+0

對不起,你能告訴我你是如何解決你的問題的?因爲我使用BorderLayout並在WEST中插入JTree,但是我有同樣的問題,而且有點難看。 – user2896152 2015-05-21 13:09:10

+0

@ user2896152:Benni有一段時間沒有見過;如果你發佈一個依賴於[示例引用]的新問題,請在此回覆(http://stackoverflow.com/questions/5822810/how-does-one-make-a-component-in-the-center-of-a -borderlayout佔據,全中心/ 5824318#5824318)。 – trashgod 2015-05-21 13:50:08