设置面板的大小

时间:2009-10-20 12:57:12

标签: java user-interface size panel

我有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);            
}
}

4 个答案:

答案 0 :(得分:7)

不要这样做。

布局管理器的重点是允许动态调整大小,这不仅对于用户可调整大小的窗口而且还需要更改文本(国际化)和不同的默认字体大小和字体。

如果你只是use the layout managers correctly,他们会照顾面板尺寸。为了避免在用户增加窗口大小时让组件在整个屏幕上伸展,让最外面的面板具有左对齐的FlowLayout,并将UI的其余部分作为其单个子项 - 这将为UI提供其首选大小和任何盈余充满了背景色。

答案 1 :(得分:1)

看起来你正在使用GridLayout,或者可能是FlowLayout,它们都不是你想要的。您可能希望使用BoxLayout,它尊重其组件的首选大小。

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

答案 2 :(得分:0)

也 - 这是首选尺寸。如果您不想允许调整大小,您也可以设置最大尺寸。

如果你能够,你可能想看看MIG布局,但是BoxLayout也很容易使用,而且已经在java工具包中了。

答案 3 :(得分:-2)

就是这个。

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

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