2009-10-20 129 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)); 

不要让布局管理器调整您的尺寸。