2011-09-15 31 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 
    } 
}