簡體   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