我以通常的方式定义了一个关键的监听器:
frame.addKeyListener(this);
frame.setFocusable(true);
处理按键的方法,即当程序退出时会退出。
这可行,但是当我使用以下内容填充整个窗口时,JFrame会填充:
frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
frame.setLocation(0, 0);
frame.validate();
然后关键监听器停止工作。有人可以解释为什么这是我在全屏保持听众时需要做的事情吗?
TIA
答案 0 :(得分:3)
,当程序退出时,就会退出。
您可以将Key Bindings添加到框架的根窗格中。类似的东西:
KeyStroke escapeKeyStroke = KeyStroke.getKeyStroke("ESCAPE");
Action escapeAction = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
// add code to end program
}
};
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escapeKeyStroke, "ESCAPE");
getRootPane().getActionMap().put("ESCAPE", escapeAction);
答案 1 :(得分:0)
我认为您需要将KeyListener添加到JFrame的子组件中。当它全屏显示时,我不认为帧(包括标题栏,关闭/最大化/最小化按钮,所有这些都隐藏在全屏幕中)可以接收输入事件。