设置面板的尺寸
问题描述:
我有3个面板。一个是容纳2个较小面板的主面板。设置面板的尺寸
对于主面板中,我使用的
setPreferredSize(new Dimension(350, 190));
对于较小的左面板中,我使用的
setPreferredSize(new Dimension(100, 190));
对于较小的右面板中,我使用的
setPreferredSize(new Dimension(250, 190));
但较小的面板保持相同的尺寸。我怎样才能解决这个问题?
这是我在我的主面板中的代码。
import model.*;
import java.awt.*;
import javax.swing.*;
public class Panel extends JPanel
{
public Panel(* *)
{
setup();
build(*);
}
private void setup()
{
setBorder(BorderFactory.createLineBorder(Color.blue));
setLayout(new BorderLayout(1, 1));
setPreferredSize(new Dimension(350, 190));
}
private void build(* *)
{
JTabbedPane tab = new JTabbedPane();
tab.addTab("Input", null, new InputPanel(), "Input");
tab.addTab("Display", null, new DisplayPanel(), "Display");
add(tab);
}
}
答
不要这样做。
布局管理器的要点是允许动态调整大小,这不仅对于用户可调整大小的窗口是必需的,而且还需要改变文本(国际化)以及不同的默认字体大小和字体。
如果你只是use the layout managers correctly,他们会照顾面板尺寸。为了避免在用户增加窗口大小时将组件拉伸到屏幕上,请使用具有左对齐FlowLayout的最外面板和其余UI作为其单个子对象 - 这将为UI提供首选大小,并且盈余充满了背景色。
答
它看起来像您使用的是网格布局,或者一个FlowLayout中,既不是你想要的。您可能需要使用BoxLayout,它尊重其组件的首选尺寸。
final JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.add(leftPanel);
p.add(mainPanel);
p.add(rightPanel);
答
就是这个。
buttonPanel = new JPanel();
buttonPanel.setSize(new Dimension(30, 100));
不要让布局管理器调整您的尺寸。
您忽略显示构建InputPanel的唯一相关代码。 – 2009-10-20 13:16:57