2011-03-04 100 views
3

我正在使用NetBeans在Java中構建一個Swing應用程序,並且我有佈局問題。我的主框架包含一個JScrollPane,其中包含一個名爲contentPanelJPanel,該JPanel又包含名爲listPanelJPanellistPanel在程序啓動時爲空,但當用戶與程序交互時,會向其添加不可預知數量的較小的JPanel。我使用NetBeans GUI構建器將listPanel的頂部邊緣對齊到contentPanel的頂部,底部邊緣也是如此。如何讓JScrollPane與嵌套的JPanel一起正常工作?

我遇到的問題是,當更多組件添加到listPanel垂直滾動條doesen't不出現在我的滾動窗格上。我的滾動窗格的verticalScrollBarPolicy設置爲AS_NEEDED,其viewportView設置爲contentPanel。我想我需要做的是在listPanel增加更多物品時讓contentPanel增長。

回答

1

使用不同的LayoutManager。一種可以像BoxLayout一樣的垂直增長。另外請記住,您可以使用多種佈局,並將它們嵌套在一起以獲得不同的效果。

+0

listPanel使用BoxLayout,你的意思是我應該在contentPanel中使用一個嗎? – 2011-03-04 14:06:24

+1

@Viktor,因爲你有嵌套的面板,你需要看看可能調整每個級別的佈局。 contentPanel佈局將成爲contentPanel內部項目的佈局和首選大小的一個因素。 – jzd 2011-03-04 14:25:14

3

我遇到的問題是,當更多的組件添加到listPanel垂直滾動條doesen't出現在我的滾動窗格。

當添加到滾動窗格的組件的首選大小大於滾動窗格的大小時,將出現滾動條。當你動態添加組件時,你需要告訴滾動窗格有些變化。所以你基本的代碼應該是:

panel.add(subPanel); 
panel.revalidate(); 

或者,因爲你要添加面板的子面板,則可能需要重新驗證滾動窗格(我不記得了):

panel.add(subPanel); 
scrollPane.revalidate(); 

的key是revalidate(),它告訴佈局管理器重新計算其大小。

相關問題