当前位置:  开发笔记 > 编程语言 > 正文

在Java中检测并操作键盘方向键

如何解决《在Java中检测并操作键盘方向键》经验,为你挑选了2个好方法。

G'day所有,

我有一个控制台项目,用户按下键盘方向键(非数字小键盘)来移动化身.我编码很难检查这些键的按键.在Pascal中,使用"readkey"和代码很容易,例如,#80用于向下按键.但是,我很难理解如何在Java中实现相同的功能,尽管我认为我理解使用System.in和BufferedInputStream.

任何人都可以帮我吗?非常感谢您的想法或提示.



1> Jason S..:

如果java.io.console不适合你(我还没试过),试试JLine.我用它来解决一个模糊的类似问题.



2> vladr..:

不幸的是,这是不可能以便携的方式:

http://forums.sun.com/thread.jspa?threadID=5351637&messageID=10526512

在Windows上,从System.in读取将被阻止,直到enter被按下,即使您不使用BufferedReader.箭头将循环显示命令历史记录.亲自尝试一下:

import java.io.*;
public class KeyTest {
  public static void main(String[] argv) {
    try {
      InputStreamReader unbuffered = new InputStreamReader(System.in);
      for (int i = 0; i < 10; ++i) {
        int x = unbuffered.read();
        System.out.println(String.format("%08x", x));
      }
    } catch (Exception e) {
      System.err.println(e);
    }
  }
}

使用Console该类的相同问题(Windows下缓冲的输入,Windows解释的箭头键):

import java.io.*;
public class KeyTest2 {
  public static void main(String[] argv) {
    try {
      Console cons = System.console();
      if (cons != null) {
        Reader unbuffered = cons.reader();
        for (int i = 0; i < 10; ++i ) {
          int x = unbuffered.read();
          System.out.println(String.format("%08x", x));
        }
      }
    } catch (Exception e) {
      System.err.println(e);
    }
  }
}

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有