我有一个JFrame,我需要添加两个不同大小的JPanel。我正在使用BorderLayout。我已经设置了框架,以便有足够的空间容纳两个面板(尺寸已经设置)以完美贴合。然而,当它运行时,右边的第二个面板一直压到一边,所以它真的很薄。
public class YourCraft extends JFrame {
public Game() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(606, 500);
setTitle("YourCraft");
setResizable(false);
setVisible(true);
setBackground(Color.BLACK);
}
public static void main(String[] args) {
Game main = new Game();
Board mainBoard = new Board();
Stats mainStats = new Stats();
main.getContentPane().add(BorderLayout.CENTER,mainBoard);
main.getContentPane().add(BorderLayout.EAST,mainStats);
}
答案 0 :(得分:3)
为您的组件提供首选大小。使用setPreferredSize为它们提供尺寸。
然后,在JFrame上调用setVisible(true)之前,请使用方法pack()。它将打包JFrame并提供足够的空间以确保每个组件的首选大小都得到尊重(如果可能的话)。
此致 斯特凡
答案 1 :(得分:3)
如果要覆盖JPanel,同意使用setPreferredSize或getPreferredSize给出JPanels首选大小,但同样重要的是,不要设置JFrame的大小,而是让其组件设置为最佳大小。正如Snicolas所提到的,pack()方法将为您解决这个问题。