嗨,我一直在学习Java Swing,以创建一个下棋游戏来练习Java编程技能。

我使用BorderLayout在JFrame的东部添加了一个JPanel,并使用setPrefferedSize(new Dimension(x,y))方法设置了宽度和高度。

之后,我创建了4个JPanel,并在先前创建的面板上用BoxLayout添加了它们。

我试图用setSize(x,y)setPreferredSize(new Dimension(x,y))设置4个面板的大小,但是它可以使4个面板自动更改大小以适合主JPanel,并且在其中一个添加了JLabel后,它的大小增加了自动地。

这是我的代码:

this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel a = new JPanel();
a.setPreferredSize(new Dimension(50, 50)); //this dosent work
a.add(min);
a.setBackground(Color.red);
this.add;

JPanel b = new JPanel();
b.setBackground(Color.blue);
this.add(b);

JPanel c = new JPanel();

this.add(c);

JPanel d = new JPanel();
d.setBackground(Color.black);
this.add(d);


如何更改每个面板的尺寸?

最佳答案

BoxLayout最适合在单个轴上布置大小可变的组件。从Javadocs:

“ BoxLayout尝试以其首选宽度(对于水平布局)或高度(对于垂直布局)排列组件。

这个想法是,它们可能具有不同的高度(对于水平布局),并且将采用最大高度。并且,它们绝对可以具有不同的宽度。此外,BoxLayout还可以与Box.createHorizontalGlue().等一些“有趣”的填充项配合使用,一旦掌握了这些内容,它们对于灵活,可调整大小的布局实际上非常有用。但是,总而言之,BoxLayout可以灵活,可调整大小地布置具有不同大小的项目。

对于较简单的情况,尤其是如果希望“尊重”首选宽度和首选高度的情况,请使用GridLayout,正如其他人所建议的那样。

09-30 15:51
查看更多