使用Java,是否可以在不使用GUI元素的情況下檢測用戶操作,如按鍵,鼠標按鍵和/或鼠標的屏幕位置?使用Java,如何在不使用GUI組件的情況下檢測按鍵?
如果是這樣,我該如何實現它?
否則,有什麼替代方案?
唯一的StackOverflow源I在這個問題上找到是this question,其是未回答的。
而我在這個問題上發現的唯一的來源之外,StackOverflow指向一個「隱形GUI」解決方案,希望是我真正想避免的。
使用Java,是否可以在不使用GUI元素的情況下檢測用戶操作,如按鍵,鼠標按鍵和/或鼠標的屏幕位置?使用Java,如何在不使用GUI組件的情況下檢測按鍵?
如果是這樣,我該如何實現它?
否則,有什麼替代方案?
唯一的StackOverflow源I在這個問題上找到是this question,其是未回答的。
而我在這個問題上發現的唯一的來源之外,StackOverflow指向一個「隱形GUI」解決方案,希望是我真正想避免的。
它可以使用JNI和/或JNA來實現,但這不能被稱爲「java實現」,因爲您必須編寫特定於平臺的本機代碼。
我嘗試過的替代解決方案是使用全屏幕透明窗口,它正在監聽鼠標和鍵盤的所有事件,並使用類Robot
將它們「轉發」到實際應用程序。我嘗試了這種方法。它適用於一個限制:支持應用程序的「鼠標懸停」事件存在問題:鼠標不在實際應用程序上移動。它正在移動透明的Java窗口。
使用java.awt.event.KeyListener類。您將不得不編寫三種方法,在這三種方法中,您可以編寫想要檢測哪個鍵以及按下鍵時想要發生的任何鍵。
另請參閱:http://stackoverflow.com/questions/9545388/how-can-i-detect-arrow-keys-in-java-console-not-in-gui – pb2q 2012-07-26 16:30:11
我認爲有可能運行[ 'EventQueue'](http://docs.oracle.com/javase/6/docs/api/java/awt/EventQueue.html)。看看JDK源代碼如何實現'JOptionPane',我似乎記得它們的模態對話框在阻止它們之前阻塞的方式,然後返回一個結果,通過創建一個新的'EventQueue'來忽略不針對對話框的事件。 – millimoose 2012-07-26 16:56:46
(這就是說,我不知道它是否會自動掛鉤到本地窗口系統並開始抓取事件。) – millimoose 2012-07-26 16:57:18