2017-06-04 108 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 –