Tag: jline

如何使用JLine编写等效的KeyListener?

我正在使用Java编写的控制台应用程序。 我要做的是处理用户键盘输入。 当在终端中使用我们的程序启动一个漫长的过程时,用户必须可以随时按’q’来停止进程(在单独的线程上运行)。 我尝试了几件事: 在另一个不同的线程中运行,读取用户输入并向进程的线程抛出InterruptedException 使用JLine及其ConsoleReader 使用JLine并添加链接到键盘键的TriggeredAction 但每次,我都面临同样的问题 :用户必须按ENTER键,我不希望这样。 如果您有任何想法或我的问题的实际解决方案,感谢您的帮助。 PS:如果您认为这是不可能的,请不要回答。 我知道这是可能的。

Java键盘输入在控制台应用程序中解析

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

Java的readline-like库

你使用哪个类似readline的Java库? 像“readline”这样的库我指的是用于编辑控制台输入的库,支持历史记录,制表符完成以及类似的东西。 我正在寻找一个,我无法从众多选择中选择( jLine – unmaintained , java-readline – 2003年最后一次发布,其他?)