使用BufferedReader在Java中按任意键

时间:2011-09-15 07:17:37

标签: java bufferedreader

当用户按任意键然后执行其他操作/重复方法时,如何检测键盘输入,除非没有swing / awt的退出按钮?

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);


 }

由于<是/> Rizq

4 个答案:

答案 0 :(得分:1)

我猜测无法用控制台检测java中的KeyPress。虽然有一种方法可以使用JNI本地完成。您可以从here

获取源代码示例

关于连续输入,直到你中断,你可以用简单的while循环来完成:

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

答案 1 :(得分:0)

一个简单的循环怎么样:

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

不确定转义字符的字符串表示形式是什么。尝试使用System.out.println(anykey)显示它并在代码中引入它。

答案 2 :(得分:0)

请注意,转义按钮不是将通过System.in传入的字符。此外,您正在使用readLine方法,因此,如果用户键入“abc”然后输入,则您的anyKey变量将包含“abc”。

基本上你需要做的是听一下键盘上的事件。查看本教程http://download.oracle.com/javase/tutorial/uiswing/events/keylistener.html

答案 3 :(得分:0)

试试这种方式

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