JPanel上的组件未显示原始大小

时间:2014-03-04 19:05:22

标签: java swing jframe jpanel components

我在JFrame上制作了一个基本游戏,我正在尝试使用两个单独的JPanel在我的框架上添加一个记分板。我尝试用WindowBuilder来做,但问题是我的GameFrame类组件没有完全显示在游戏框架中。它看起来像这样:

enter image description here

代码如下:

    JFrame frame = new JFrame("Game");
    frame.setSize(500, 700);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    frame.getContentPane().setLayout(null);

    JPanel panel = new JPanel();
    panel.setBounds(0, 100, 500, 600);
    panel.add(new GameFrame());
    frame.getContentPane().add(panel);
    frame.setVisible(true);

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

默认情况下,JPanel使用FlowLayout尊重首选尺寸。由于您的GameFrame组件类目前无法覆盖它,因此您需要使用使用最大可用区域的布局管理器

panel.setLayout(new BorderLayout());

答案 1 :(得分:0)

我认为将布局设置为null就是这个问题。设置适当的布局,如下所示

frame.setLayout(new GridLayout(1,1));)

答案 2 :(得分:0)

您是否尝试过其中一项:http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html? 如果是这样,什么不起作用?

如果您希望记分板位于顶部,则可以使用panel.add(例如新的ScoreBoard(),BorderLayout.PAGE_START)来使用BorderLayout。