java - 如何用 JLine 编写等效的 KeyListener?

标签 java console jline

我正在开发一个用 Java 编写的控制台应用程序。我要做的是处理用户键盘输入。当我们的程序在终端中启动一个较长的进程时,用户必须可以随时按 'q' 来停止进程(在单独的线程上运行)。

我试过几种方法:

  • 在另一个不同的线程中运行读取用户输入并向进程的线程抛出 InterruptedException 的东西
  • 使用 JLine 及其 ConsoleReader
  • 使用 JLine 并添加链接到键盘键的 TriggeredAction

但每次,我都会遇到同样的问题:用户必须按ENTER 键,而我不想这样。

如果您有任何想法或我的问题的实际解决方案,感谢您的帮助。

PS:如果您认为这是不可能的,请不要回答。我知道这是可能的。

最佳答案

也许您可以使用这些库之一,

http://sourceforge.net/projects/jxgrabkey/对于 Linux

https://code.google.com/p/jintellitype/ window

与你的问题关系不大,但我认为可以帮助你,

http://sourceforge.net/projects/javacurses/

所有这一切的问题在于您将失去平台独立性。

关于java - 如何用 JLine 编写等效的 KeyListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089546/

相关文章:

java - 用 jline 预填充一行

java - 如何更改 JTextArea 中光标的默认位置?

java - "com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure"到远程数据库

java - 如何在 Debian 10 (Buster) 上安装 openjdk-8-jdk?

javascript - 在 javascript IDE 中而不是在浏览器控制台中测试 DOM 方法

Java Mockito 卡在单例方法的 doReturn 处

java - 如何使用 Java ProcessBuilder API 运行交互式 bash?

java - 使用 Camel 通过 http 发送普通 SOAP

javascript - Safari 开发者工具 : How to Preserve Console Log Upon Navigation?

javascript - 无缘无故地在控制台中打印未定义,Javascript