【问题标题】:Press Anykey in Java with BufferedReader使用 BufferedReader 在 Java 中按任意键
【发布时间】:2011-11-17 15:15:14
【问题描述】:

当用户按下任意键然后 doSomething/Repeat 方法时如何检测键盘输入,除非没有 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);


 }

谢谢
MRizq

【问题讨论】:

    标签: java bufferedreader


    【解决方案1】:

    我猜无法使用控制台检测 Java 中的 KeyPress。虽然有一种方法可以使用 JNI 本地完成。您可以从here获取源代码示例

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

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

    【讨论】:

      【解决方案2】:

      试试这个方法

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 谢谢兄弟……最后,我用 swing 和 keylistener 一起工作。
        【解决方案4】:

        一个简单的循环怎么样:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-11-10
          • 2015-01-23
          • 1970-01-01
          • 1970-01-01
          • 2011-12-13
          • 1970-01-01
          • 2012-08-06
          相关资源
          最近更新 更多