如何在另一个JPanel上显示JPanel然后隐藏它

时间:2013-02-19 20:15:11

标签: java swing awt

所以我想拥有2个JPanel。向上JPanel(introPanel)和向下JPanel(mainPanel)。我想将keyListener添加到JFrame,所以当我按任意键向上面板隐藏所以我们可以看到下面板。代码应该如何工作?

class MainFrame extends JFrame {
    private MainPanel mainPanel = new MainPanel();
    private IntroPanel introPanel = new IntroPanel();

    MainFrame() {
        add(mainPanel);
        add(introPanel);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(KeyEvent ev) {
                introPanel.setVisible(false);
            }
        });
        pack();
        setVisible(true);
    }

}

此代码不会隐藏introPanel。怎么了?

1 个答案:

答案 0 :(得分:3)

您只能在BorderLayout.CENTER位置放置一个组件,以便introPanel在添加mainPanel时替换mainPanel。如果您希望显示,则必须添加add(mainPanel); revalidate(); repaint();

KeyListeners

考虑使用CardLayout。它以这种方式支持“堆叠”组件的概念。

还要考虑将Key Bindings用于基于Swing的应用程序。与KeyEvents不同,Key Bindings不需要专注于与{{1}}进行交互。