我有两个面板,希望它们显示在我的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);
}}
您已经将两个面板添加到JFrame
的BorderLayout.CENTER
;只有一个可以占用该位置,这将是最后一个添加的,在本例中是panel2
。
为了使面板均匀地占用空间,您可以使用GridLayout
:
frame.setLayout(new GridLayout(2, 1));
旁白:在Swing中为组件注册键事件时最好使用Key Bindings
创建JPanel并将其添加到JFrame中。将panel1和panel2添加到新面板中。JFrame只能有一个子节点,通常通过调用JFrame. setcontentpane()来设置。