我想让我的程序运行但是一旦按下esc就退出该程序。我能想到这样做的唯一方法是通过扫描并查找下一行但暂停整个程序。也许是一个关键的倾听者,但我如何让它不断检查?它是一个GUI。任何帮助都会很棒!
static Scanner sc = new Scanner(System.in);
stop = sc.nextLine();
if (stop.equals(a)){
running = false;
}
else{
do program
}
答案 0 :(得分:2)
如果您使用框架,则可以注册密钥。
myFrame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "EXIT");
myFrame.getRootPane().getActionMap().put("EXIT", new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
myFrame.dispose();
}
});
答案 1 :(得分:1)
如果这是一个UI,则不应该维护任何可能阻止事件调度线程的循环。
EDT会将关键事件发送到您的程序,如果您已注册通知,则可以回复它们。
我会避免使用KeyListener
,因为它需要注册的组件会被聚焦并且在它响应之前会有键盘焦点。
相反,我会使用Key Bindings API。
您可以将 Escape 键注册到主应用程序窗口(或子组件),或直接使用您用来关闭应用程序的JButton
。