2013-10-22 79 views
1

我有不同的元素JPanels的集合:所有這些都setLayout的設置爲空,且固定大小304x416的JPanel的showPane,seasonsPane,episodesPane,airingsPane
。我說這些JPanels到一個JPanel稱爲大小1280x416的showViewPanel併成立的BoxLayout像這樣(下面是在JFrame中的代碼):用的JPanel與BoxLayout的java的JScrollPane的大小調整元素

showViewPanel.setLayout(new BoxLayout(showViewPanel, BoxLayout.X_AXIS)); 
showViewPanel.setSize(1280, 416); 
showViewScroll = new JScrollPane(showViewPanel); 
add(showViewScroll); 
setSize(304, 416); 
setVisible(true); 

我想不通的是,爲什麼它不產生所有組件的可滾動視圖,而是調整showViewPanel的大小以匹配窗口的大小。我究竟做錯了什麼?

回答

1

改爲將子面板的preferredSize替換爲304x416。該滾動窗格依賴於內容的首選大小(取決於其內容的首選大小)。

佈局管理器將根據它們的首選大小來設置子面板的大小,因此您的自定義面板將被覆蓋。一般來說,你應該擺脫null佈局,並學習使用佈局管理器。絕對安置會一直造成麻煩,即使沒有麻煩也不值得。

3

所有這些都將setLayout設置爲null並且大小爲304x416。

不要使用null佈局!不要手動設置面板的大小!您的面板應使用佈局管理器,以便自動計算首選大小。

如果您希望所有面板的尺寸相同,那麼可以使用主面板(而不是BoxLayout)的GridLayout,然後將您的子面板添加到此面板。

如果讓佈局經理完成工作,滾動條會在需要時自動出現。