1

我有两个面板,希望它们显示在我的 JFrame 中,但是当我这样尝试时,我只能看到第二个。有人可以帮帮我吗?:(

import javax.swing.JFrame;

public class MainWindow {

CardLayout layout;
JFrame frame;
Player panel1;
Block panel2;

public MainWindow() {
    frame = new JFrame("Rechteck");
    panel1 = new Player();
    panel2 = new Block();
    panel1.addKeyListener(new KeyListen(panel1));
    frame.add(panel1);
    frame.add(panel2);
    frame.setSize(500,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}}
4

2 回答 2

4

您已将两个面板都添加到BorderLayout.CENTER您的JFrame- 只有一个可以占据该位置。panel2在这种情况下,这将是最后一个添加的。

为了让面板均匀地占据空间,您可以使用GridLayout

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

另外:在 Swing 中为组件注册键事件时最好使用键绑定。

于 2013-01-07T21:49:20.347 回答
1

创建一个 JPanel 将其添加到 JFrame。将 panel1 和 panel2 添加到新面板。JFrame 只能有一个孩子,通常通过调用 JFrame.setContentPane() 来设置。

于 2013-01-07T21:45:54.263 回答