2013-09-30 35 views
2

我想在用户按'a'键时终止的java中实现一个简单的程序(带有永久循环)。我可以使用system.in来完成,但用户应该按下'a'后按Enter键。我希望程序在按'a'后立即终止。是否有任何方法可以做到这一点。我发现使用JNI是一种解决方案,但我不喜欢使用第三方库,因为这只是一个简单的代码。在java控制台应用程序中实现一个关键监听程序

回答

1

但我不喜欢使用第三方库,因为这只是一个简单的代码。

然后它不能完成。

标准Java控制台无法响应单键按压,所以所有解决方案都需要第三方或JNI/JNA或非控制台(gui)解决方案。

+0

感谢气垫船Full of Eels,是否有任何代码可以使用JNI库来实现?这将会是一个很好的帮助。 –

+0

@HeshithaHettihewa:我自己并没有使用JNI。虽然这种解决方案仅限于Windows机器,但我已经使用了一个由套接字绑定到Java应用程序的小型AutoIt应用程序来解决类似的问题。也有第三方控制台可用,可能会允许这个工作。 –

+0

好的,谢谢我会做一些第三方库的研究,可以帮助。 –

1

几年前,我应对了这个问题,或者甚至更多。我发现了一个在Ubuntu系统中为我工作的技巧。技巧是在执行应用程序之前调用

stty -icanon min 1 

;这个相同的技巧被用作已经用于Windows环境的库jline的一部分。

+0

感谢FabioDch.Is有没有办法在Windows环境中做到这一点? –

+0

不,对不起...也许你可以尝试创建一个隐藏的JFrame,或类似的东西,并听取一些keyEvent ...但它只不过是一个黑客。正如Hovercraft所说:“一个标准的Java控制台无法响应单键按压”。 – FabioDch

+0

好吧我现在明白了。我会尝试使用库。谢谢你的答复。 –

相关问题