Java Swing面板大小

Java Swing面板大小,java,swing,layout-manager,Java,Swing,Layout Manager,大家好,我一直在学习JavaSwing,以创建一个国际象棋游戏来练习我的Java编程技能 我在JFrame的东部添加了一个JPanel,带有BorderLayout,并使用setPreferedSize(新尺寸(x,y))方法设置宽度和高度 之后,我创建了4个JPanel,并在先前创建的面板上添加了BoxLayout 我曾尝试使用setSize(x,y)和setPreferredSize(新尺寸(x,y))设置4个面板的尺寸,但这不起作用。4个面板会自动更改其尺寸以适应主JPanel,在其中一个

大家好,我一直在学习JavaSwing,以创建一个国际象棋游戏来练习我的Java编程技能

我在JFrame的东部添加了一个JPanel,带有
BorderLayout
,并使用
setPreferedSize(新尺寸(x,y))
方法设置宽度和高度

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

我曾尝试使用
setSize(x,y)
setPreferredSize(新尺寸(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。

您处理的这些问题取决于布局。是否必须使用
BoxLayout
?就我个人而言,我会使用
GridLayout
来完成您试图完成的任务;更多。这些确实是
BoxLayout
问题。尝试使用
Grid
layout,它将远远超出您的预期。