在Jpanel的Frame上分配空间

时间:2011-06-12 22:36:41

标签: java swing jpanel layout-manager

我有一个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);
}

2 个答案:

答案 0 :(得分:3)

为您的组件提供首选大小。使用setPreferredSize为它们提供尺寸。

然后,在JFrame上调用setVisible(true)之前,请使用方法pack()。它将打包JFrame并提供足够的空间以确保每个组件的首选大小都得到尊重(如果可能的话)。

此致  斯特凡

答案 1 :(得分:3)

如果要覆盖JPanel,同意使用setPreferredSize或getPreferredSize给出JPanels首选大小,但同样重要的是,不要设置JFrame的大小,而是让其组件设置为最佳大小。正如Snicolas所提到的,pack()方法将为您解决这个问题。