我在JFrame上制作了一个基本游戏,我正在尝试使用两个单独的JPanel在我的框架上添加一个记分板。我尝试用WindowBuilder来做,但问题是我的GameFrame类组件没有完全显示在游戏框架中。它看起来像这样:
代码如下:
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);
我该如何解决这个问题?
答案 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。