繁体   English   中英

如何在另一个JPanel上显示JPanel,然后将其隐藏

[英]How to show JPanel over another JPanel and then hide it

因此,我想拥有2个JPanels。 向上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。 怎么了?

您只能将一个组件放置在BorderLayout.CENTER位置,这样introPanel会在添加mainPanel时使其移位。 如果您希望显示它,则必须添加mainPanel

add(mainPanel);
revalidate();
repaint();

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

还可以考虑将键绑定用于基于Swing的应用程序。 KeyListeners不同,Key Binding不需要焦点即可与KeyEvents进行交互。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM