我有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(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 :(得分: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));
不要让布局管理员调整您的尺寸。