我刚开始搞乱JLine来解析控制台模式下的字符输入.它似乎运作良好,但我想知道:
在JLine中是否存在非阻塞方式以查明字符是否可用?(就像kbhit()
在Windows中一样.)
我想我总是可以将键盘输入包装在自己的线程中,然后将线程安全队列中的键盘字符提供给主线程,但这似乎是不必要的.
编辑:这是逐字符解析.我不打算使用GUI.在控制台模式下,Java中通常的InputStream I/O要求您首先按Enter键(例如,它只是缓冲输入).请不要告诉我在Java中无法在控制台模式下输入逐个字符的输入; 事实并非如此.JLine使用具有平台相关实现的可移植接口来实现它.
编辑更新:我能够组合一个帮助程序类来在工作线程中执行阻塞I/O(对于每个字符的I/O使用JLine,警告:您必须自己解析Ctrl-C!)然后进行通信通过带有isempty()例程的同步队列.对于我现在正在做的事情,这很好,但我真的想知道未来的好方法.