一个JFrame中的两个面板?

时间:2013-01-07 20:43:06

标签: java swing panels

我有两个面板并希望它们显示在我的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);
}}

2 个答案:

答案 0 :(得分:4)

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

要让面板均匀占据空间,您可以使用panel2

GridLayout

除了:在为Swing中的组件注册关键事件时,最好使用Key Bindings

答案 1 :(得分:1)

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