我有两个
这是我的代码:
JPanel
需要放在一个JFrame
中,我希望它们都占据整个窗口的宽度,但是我不知道如何设置。另外,我不太喜欢使用setBounds()
方法,所以我想知道是否有一种方法可以使组件占满整个宽度,之后只需指定所需的高度即可。这是我的代码:
public class Test extends JFrame {
public Test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 400);
setLocationRelativeTo(null);
setLayout(new BorderLayout());
JPanel header = new JPanel();
header.setBounds(0,0,300,50);
header.setLayout(new BorderLayout());
header.setBackground(Color.gray);
JPanel body = new JPanel();
body.setBounds(0,50,300,300);
body.setLayout(new BorderLayout());
body.setBackground(Color.black);
add(header, BorderLayout.NORTH);
add(body, BorderLayout.CENTER);
//setLayout(null);
setVisible(true);
}
}
setLayout(null);
是无效的。 - Tom Hawtin - tacklineBorderLayout
(这是JFrame
的默认布局)通常可以实现此目的。您还可以使用GridBagLayout
,这可能会给您更多的控制权。问题在于,归根结底,像素完美的布局是一种幻觉。如果您“需要”限制组件的大小,则需要覆盖getMinimum/Maximum/PreferredSize
方法。 - MadProgrammer0x0
。 - MadProgrammerbody
上调用setBounds()
方法;只需要调用setPreferredSize()
方法即可。 - FredK