所以我想拥有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。怎么了?
答案 0 :(得分:3)
您只能在BorderLayout.CENTER
位置放置一个组件,以便introPanel
在添加mainPanel
时替换mainPanel
。如果您希望显示,则必须添加add(mainPanel);
revalidate();
repaint();
:
KeyListeners
考虑使用CardLayout。它以这种方式支持“堆叠”组件的概念。
还要考虑将Key Bindings用于基于Swing的应用程序。与KeyEvents
不同,Key Bindings不需要专注于与{{1}}进行交互。