2009-10-20 156 views
4

我有3個面板。一個是容納2個較小面板的主面板。設置面板的尺寸

對於主面板中,我使用的

setPreferredSize(new Dimension(350, 190)); 

對於較小的左面板中,我使用的

setPreferredSize(new Dimension(100, 190)); 

對於較小的右面板中,我使用的

setPreferredSize(new Dimension(250, 190)); 

但較小的面板保持相同的尺寸。我怎樣才能解決這個問題? alt text

這是我在我的主面板中的代碼。

import model.*; 
import java.awt.*; 
import javax.swing.*; 

public class Panel extends JPanel 
{ 

public Panel(Prison prison) 
{ 
    setup(); 
    build(prison); 
} 

private void setup() 
{ 
    setBorder(BorderFactory.createLineBorder(Color.blue)); 
    setLayout(new BorderLayout(1, 1)); 
    setPreferredSize(new Dimension(350, 190)); 
} 

private void build(Prison prison) 
{ 
    JTabbedPane tab = new JTabbedPane();  
    tab.addTab("Input", null, new InputPanel(), "Input"); 
    tab.addTab("Display", null, new DisplayPanel(), "Display"); 
    add(tab);    
} 
} 
+0

您忽略顯示構建InputPanel的唯一相關代碼。 – 2009-10-20 13:16:57

回答

6

不要這樣做。

佈局管理器的要點是允許動態調整大小,這不僅對於用戶可調整大小的窗口是必需的,而且還需要改變文本(國際化)以及不同的默認字體大小和字體。

如果你只是use the layout managers correctly,他們會照顧面板尺寸。爲了避免在用戶增加窗口大小時將組件拉伸到屏幕上,請使用具有左對齊FlowLayout的最外面板和其餘UI作爲其單個子對象 - 這將爲UI提供首選大小,並且盈餘充滿了背景色。

1

它看起來像您使用的是網格佈局,或者一個FlowLayout中,既不是你想要的。您可能需要使用BoxLayout,它尊重其組件的首選尺寸。

final JPanel p = new JPanel(); 
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); 
p.add(leftPanel); 
p.add(mainPanel); 
p.add(rightPanel); 
+0

主面板是包含選項卡的主面板,輸入選項卡下面是另外2個面板。對於主面板,我使用BorderLayout,對於左側和右側面板,我使用GridLayout。 – Karen 2009-10-20 13:08:04

+0

您無法修改GridLayout中單元格的大小(單元格具有相同的維數) – jerjer 2009-10-20 13:22:41

0

也 - 這是首選大小。如果您不想調整大小,還可以設置最大大小。

如果你能夠,你可能想看看MIG佈局,但BoxLayout也很容易使用和已經在java工具包中。

-2

就是這個。

buttonPanel = new JPanel(); 
buttonPanel.setSize(new Dimension(30, 100)); 

不要讓佈局管理器調整您的尺寸。