天儿真好所有,
我有它的目的是在用户按下键盘方向键(非数字键盘)来移动化身一个控制台项目。我有困难的编码,以检查这些键的按下。在帕斯卡尔很容易就够用了“readkey”和代码,例如,用于#80向下按键。不过,我难倒了如何在Java中实现相同的功能,但我想我明白使用System.in和的BufferedInputStream的。
任何人都可以帮我吗?你的想法或暗示的赞赏。
Java中的控制台支持问题是众所周知的,我不知道这是可行的。
这不是最初可能与System.in,因为它用来工作线为主。
太阳最终加入了java.io.Console类。
下面是它的JavaDoc中:http://java.sun.com/javase/6/docs/api/java/io/Console.html
一旦你的控制台(我觉得从System.console),你可以得到一个读者,也许从中读取字符,但我不知道这是否包括键。
一般来说,你应该,如果你想进入键盘,这是愚蠢的使用Swing或AWT。
截至2007年,有关于它的功能要求:here
如果java.io.console不适合你(我还没有尝试过),尝试JLine。我用它来解决vaguely similar problem。
不幸的是,这是不可能的便携式方式:
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);
}
}
}
使用qazxsw POI类相同的问题(输入Windows下的缓冲,箭头键由Windows解释):
Console
不带内置的Java代码。退房如上面提到的,如果你想继续诅咒的Java库或的JLine。