java - 并发/非阻塞控制台键盘输入

标签 java input textinput stdio

我正在用 Java 开发 MUD。我每次都读取播放器输入,但我使用的是 Scanner,它使用阻塞操作。我想要非阻塞输入。

我看过 nio 包,它有一个 Selector 类,但我不确定如何将它用于 System.in 。我想一旦我运行服务器我肯定会需要它,但现在一切都处于离线状态。

我已经尝试从 Applet 扩展主类并覆盖 keyDown,但这只是意味着在第一个输入之后不再接受输入。当然,我不再阻止任何东西,但是没有更多的输入。 keyDown 我猜再也没有被调用过。

也许线程即使在执行阻塞操作时也可以被中断?

感谢您对此问题的任何见解。

最佳答案

你不能用系统控制台做到这一点,因为现在还不能以多平台的方式做到这一点。

您可以使用 Swing 窗口作为控制台或找到基于 JNI 的方法,但它可能无法在某些平台上工作。

您可以使用 JCurses .它可能会工作,它基于 JNI 并支持 Windows 和 Linux。

关于java - 并发/非阻塞控制台键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2249680/

相关文章:

java - 键值映射而不是很长的 ELSE-IF 结构?

java - 用户提供的整数数组的第一,第二和第三大数

java - 为什么从非静态方法访问静态方法不好?

javascript - 页面加载时未加载日期和时间

javascript - 如何检测输入 jQuery 的值变化?

javascript - 我无法从输入框中获取值

android - TextInput 键入的文本未出现在 android 上

iphone - UITextField焦点

java - LIKE 中的单引号进入 JDBC 准备语句

html - <input/> 上的 Opera 12.14 border-radius 不工作