我希望我的程序运行,但是一旦按下 esc 退出程序。我能想到的唯一方法是做一个扫描仪并寻找下一行,但这会暂停整个程序。也许是一个关键的听众,但我如何让它不断检查?它是一个图形用户界面。任何帮助都会很棒!
static Scanner sc = new Scanner(System.in);
stop = sc.nextLine();
if (stop.equals(a)){
running = false;
}
else{
do program
}
如果你使用框架,你可以注册键。
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();
}
});
如果这是一个 UI,则不应维护任何可能阻塞事件调度线程的循环。
EDT 将向您的程序发送关键事件,如果您已注册通知,您可以响应它们。
我会避免KeyListener
,因为它需要它注册的组件被聚焦并在它响应之前具有键盘焦点。
相反,我会使用Key Bindings API。
您可以将一个Escape键注册到主应用程序窗口(或子组件)或直接使用JButton
您用来关闭应用程序的键。