G'day所有,
我有一个控制台项目,用户按下键盘方向键(非数字小键盘)来移动化身.我编码很难检查这些键的按键.在Pascal中,使用"readkey"和代码很容易,例如,#80用于向下按键.但是,我很难理解如何在Java中实现相同的功能,尽管我认为我理解使用System.in和BufferedInputStream.
任何人都可以帮我吗?非常感谢您的想法或提示.
如果java.io.console不适合你(我还没试过),试试JLine.我用它来解决一个模糊的类似问题.
不幸的是,这是不可能以便携的方式:
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); } } }