2011-02-18 54 views
0

我在JScrollPane中顯示了一個很大的JTree(許多節點)。我想讓最後一個樹節點顯示在JScrollPane的頂部。 Swing默認情況下似乎不允許這樣做,顯示JTree的最後一個節點位於JScrollPane的底部。 JScrollBar拇指觸及其軌道的底部。我使用JViewport.setViewPosition()方法將樹節點的左上角位置設置爲JViewport中的左上角位置,但它拒絕這樣做,如果這會導致它顯示「空白「在JTree的底部。滾動JTree,使最後一行位於Java中的JScrollPane的頂部

我已經嘗試通過設置大小(.setViewSize爲其舊值+額外的高度.getExtentSize())來操縱JViewport,但它仍拒絕允許拇指向下移動,即使它現在是不是在其軌道的底部。我正在調整事件處理程序(.addChangeListener)中的JViewport大小。

回答

1

我想你可以重寫JTree的首選大小爲默認的首選大小加上視口的範圍大小減去一行JTree的高度。

+0

問題是,只要我設置了JTree的首選大小,它就失去了再次用新節點擴展/摺疊來計算自己大小的能力(請參閱「JComponent.getPreferredSize()」的源代碼)。 – Ralph 2011-02-18 20:57:10

0

如果將JTree放在底部有空白的VBox中,然後用JScrollPane包裝VBox,會怎麼樣?

相關問題