2013-05-31 35 views
0

我想在JFrameContentPane內創建一個JPanel,我想我的JPanel填充所有contentPane的寬度。如何創建一個JPanel來填充它父級的所有寬度?

我使用BoxLayout作爲contentPane的佈局。這裏是我的代碼:

getContentPane().setLayout(new BoxLayout(), BoxLayout.PAGE_AXIS); 

JPanel row = new JPanel(); 
row.setLayout(new BoxLayout(row, BoxLayout.LINE_AXIS)); 
getContentPane().add(row); 
+1

使用'BoxLayout'的任何特殊原因?你爲什麼不使用'BorderLayout'? – ntalbs

+0

這是BoxLayout的默認行爲。發佈你的'SSCCE'來證明問題。 – camickr

回答

-1

您需要設置最小/首選/最大的面板尺寸,否則將BoxLayout不知道如何正確的尺寸分配給您的潘內爾。見this tutorial

下面是您可以使用的代碼示例。如果更改各種尺寸,或者對setMinimumSize()setPreferredSize()方法調用發表評論,您將看到對面板繪製方式的影響。我將row面板的背景設置爲紅色,以便您可以在測試過程中輕鬆看到面板。

JFrame frame = new JFrame ("Test"); 
frame.setSize (new Dimension (500, 500)); 
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 

Container contentPane = frame.getContentPane(); 
contentPane.setLayout (new BoxLayout (contentPane, BoxLayout.PAGE_AXIS)); 

JPanel row = new JPanel(); 
row.setBackground (Color.RED); 
row.setLayout(new BoxLayout(row, BoxLayout.LINE_AXIS)); 
row.setMinimumSize (new Dimension (100, 100)); 
row.setPreferredSize (new Dimension (250, 200)); 
row.setMaximumSize (new Dimension (500, 300)); 
contentPane.add(row); 

frame.setVisible (true); 
相關問題