2011-09-15 61 views
4

如何在用戶按任意鍵然後執行某些/重複方法時檢測鍵盤輸入,除非沒有擺動/ awt的退出按鈕?用BufferedReader按Java中的Anykey

public static void isChecking(String x)throws Exception { 

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String anykey = null; 
    System.out.print("Press Anykey to Continue : "); 
    anykey = br.readLine(); 

    //if pressanykey 
    main(null); //call main class 
    //if escape button 
    System.out.println("Good Bye "); 
    System.exit(1); 


} 

謝謝
MRizq

+0

在哪裏「任意鍵」? –

+0

除非轉義鍵 – MRizq

回答

1

有沒有辦法與控制檯我想檢測按鍵響應在java中。儘管有一種方法可以在本地使用JNI來完成。你可以得到一個例子從here

源代碼對於連續輸入,直到你打破,你可以做簡單的while循環:

while((input = in.readLine()) != null){ 
       System.out.println(); 
       System.out.print("What you typed in: " + input); 
      } 
+0

我使用了keycode!='27'// escape:D – MRizq

0

怎麼樣一個簡單的循環:

boolean escapeIsNotPressed = true; 
while (escapeIsNotPressed) { 
    anyKey = br.readLine(); 
    if (anyKey.equals(espaceCharacter)) { 
     escapeIsNotPressed = false; 
    } else { 
     main(null) 
    } 
} 

不知道什麼是轉義字符的字符串表示。嘗試使用System.out.println(anykey)將其顯示並將其引入您的代碼中。

0

請注意,退出按鈕不是通過System.in傳入的字符。此外,您正在使用readLine方法,因此,如果用戶輸入「abc」然後輸入,則您的anyKey變量將包含「abc」。

基本上你需要做的就是聽取鍵盤上的事件。看看這個教程http://download.oracle.com/javase/tutorial/uiswing/events/keylistener.html

+0

感謝兄弟......最後,我用swing與keylistener一起工作。 – MRizq

0

嘗試這種方式

public void keyPressed(KeyEvent e) { 
    while(!e.keyCode == Keyboard.ESCAPE) { 
      //do something 
    } 
}