2017-06-04 106 views
0

如何分配给ESC的变量。键,这样当它被按下程序关闭? 我做一个计算器和我所看到的是做什么的一样,直接的唯一途径:如何退出正在运行的程序?

Scanner console = new Scanner(System.in); 
int x = 1; 
while(x==1) 
{... 
System.out.println("Enter in -1 to exit program"); 
x = nextInt(); 
} 

我不知道它是否可以分配,每说一个-1到退出键。让我知道你有什么想法吗?这将是天文数字的赞赏。 ;-) ... :-)

+0

和所有必要的进口已经做出,只是为了让说出来的就是这样的方式...... –

+0

,感谢@baao我的天文感谢送给你!即使你没有得到一个物理奖杯,并没有用这个职位的感谢。 :_-) –

回答

2

不幸的是,你不能。

ESC无法被Scanner读取。您应该使用UI库中的关键侦听器(例如Swing)。看看"How to write a key listener?"

在这种情况下,你应该问了许多来自作为回路断线的关键用户(如你实际做)。

1

这是当我用好图书馆的很长一段时间,因此,如果您可以使用JNativeHook库,您可以轻松解决这个问题。

下面是一个例子:

import org.jnativehook.GlobalScreen; 
import org.jnativehook.NativeHookException; 
import org.jnativehook.keyboard.NativeKeyEvent; 
import org.jnativehook.keyboard.NativeKeyListener; 

public class TestEscKey implements NativeKeyListener{ 

    @Override 
    public void nativeKeyPressed(NativeKeyEvent nke) { 
     if(NativeKeyEvent.getKeyText(nke.getKeyCode()).equals("Echap")){ 
      System.out.println("I will exit!"); 
      System.exit(0); 
     }else{ 
      //do another thing 
     } 
    } 

    @Override 
    public void nativeKeyReleased(NativeKeyEvent nke) { 
    } 

    @Override 
    public void nativeKeyTyped(NativeKeyEvent nke) { 
    } 

    public static void main(String[] args) throws NativeHookException { 
     try { 

      GlobalScreen.registerNativeHook(); 
     } catch (NativeHookException ex) { 
      System.out.println("There was a problem registering the native hook.\n" 
           + ex.getMessage()); 
      System.exit(1); 
     } 
     GlobalScreen.getInstance().addNativeKeyListener(new TestEscKey()); 
    } 
} 
+0

什么@ S.Nary ...? –

+0

第一次覆盖是通过第二次覆盖做什么的,这对我来说是全新的? –

+0

这是实现在接口'NativeKeyListener'所以你要下载的罐子,然后用它在你的项目像任何广口瓶的方法或依赖关系是的,它是新的,但它做的伎俩,如果你可以用它正确@S .Nary –