当前位置: 首页 > 面试题库 >

在Java中,最好的捕获方式是 击键?

王弘和
2023-03-14
问题内容

我在捕获Java命令行应用程序中的 按键时遇到问题。使用System.in.read()时,按Tab键似乎什么也没得到。解决此问题的最佳方法是什么?

为了提供一些背景信息,我试图让用户点击tab键的中间命令以使其自动完成命令(就像您在bash
shell中所做的一样)。如果有更好的方法可以实现这一目标,我愿意提出建议(也许使用System.in.read()并不是解决此问题的最佳角度吗?)。


问题答案:

看看JLine。我自己没有使用过。它使用Windows
DLL(使用JNI),并且具有Linux支持,可以将控制台切换到字符/原始模式,而不是缓冲模式。我以前从未使用过此功能,因此请您自担风险。我也不确定100%是否能解决您的问题,但值得一试:)

编辑: 我可以确认它确实有效

ConsoleReader cr = new ConsoleReader();
while (cr.readVirtualKey() != 0x09){
  //loop till Tab is pressed
}

再次编辑: 该库确实包含命令行的自动完成功能(通过按Tab键)… Enjoy :)



 类似资料:
  • 我正在查看Java SE7的新功能,目前我正在: http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html 关于捕获多重功能,当我遇到这个语句时: 注意:如果一个捕捉块处理多个异常类型,那么捕捉参数是隐式最终的。在这个例子中,捕捉参数ex是最终的,因此您不能在捕捉块中给它赋值。 我从未注意到

  • 问题内容: Jeff实际上在Sanitize HTML中发布了有关此内容的信息。但是他的示例在C#中,而实际上我对Java版本更感兴趣。有没有人有更好的Java版本?他的示例足以将直接从C#转换为Java吗? [更新]我悬赏这个问题,因为当我问这个问题时,SO不如今天(*)受欢迎。至于与安全相关的任何事物,研究它的人越多,它就越好! (*)实际上,我认为它仍处于封闭测试阶段 问题答案: 不要使用正

  • 问题内容: 我想知道是否有一种快速/干净的方法来获得两组之间的对称差异? 我有: 我需要类似的东西: 为了澄清我需要 对称的 区别。 问题答案: 您可以使用Google Guava库中的一些功能(这确实很棒,我强烈推荐!): 差异()和symmetricDifference()的 Javadocs 确实满足您的要求,但通常也有帮助。 两种方法都返回实时视图,但是例如您可以调用结果集以获得不变的集。

  • 问题内容: 我正在检查Java SE7的新功能,目前我正在: http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch- multiple.html 关于捕获多个功能,当我遇到以下语句时: 注意:如果catch块处理多个异常类型,则catch参数隐式为final。在此示例中,catch参数ex是最终的,因此您不能在ca

  • 问题内容: 但适用于linux / X11。 更具体地说,我需要一种方法来捕获在X11 diplay上运行的一个窗口(窗口中alt-print屏幕的程序等效)的像素图像。 注意事项和要求: 1)即使将新窗口放置在正在捕获的窗口之上,像素图像也应始终指向原始应用程序窗口,而不会发生任何遮挡 2)不需要用户看到应用程序窗口,我只需要存储用于视频目的的像素缓冲区/图像 我探索过的其他替代方法是: 1)x

  • 我有两种方法来检查列表是否为空 而且 我的拱门告诉我前者比后者好。但我认为后者更好。 谁能澄清一下吗?