1

我希望我的程序运行,但是一旦按下 esc 退出程序。我能想到的唯一方法是做一个扫描仪并寻找下一行,但这会暂停整个程序。也许是一个关键的听众,但我如何让它不断检查?它是一个图形用户界面。任何帮助都会很棒!

static Scanner sc = new Scanner(System.in);

stop = sc.nextLine();

if (stop.equals(a)){
running = false;
}
else{
do program
}
4

2 回答 2

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();
        }
    });
于 2013-06-11T00:31:12.373 回答
1

如果这是一个 UI,则不应维护任何可能阻塞事件调度线程的循环。

EDT 将向您的程序发送关键事件,如果您已注册通知,您可以响应它们。

我会避免KeyListener,因为它需要它注册的组件被聚焦并在它响应之前具有键盘焦点。

相反,我会使用Key Bindings API

您可以将一个Escape键注册到主应用程序窗口(或子组件)或直接使用JButton您用来关闭应用程序的键。

于 2013-06-11T00:28:27.017 回答