2013-10-21 29 views
0

這個問題可能很奇怪。但我試圖讓它理解。我正在嘗試在java中製作屏幕鍵盤。它應該寫入光標被激活的字符。就像打開一個微軟Word文件,用我想用該文件寫入的鍵盤。可能是我在Visual Studio中編寫代碼,我將通過點擊鍵盤的按鍵在Visual Studio中編寫代碼。我該如何使用鍵盤在其他應用程序中編寫代碼。可以給我任何想法嗎?提前致謝。 我做了鍵盤佈局(阿爾法&數字字符)與擺動。書寫激活文本光標的文本(就像在屏幕鍵盤上一樣)

回答

3

你有一系列複合問題,主要圍繞鍵盤焦點旋轉。

主要問題是,一旦您單擊窗口中的按鈕,該窗口因爲焦點而成爲鍵盤焦點的活動接收者,這意味着您發送按鍵的任何嘗試都將最終被佔用通過你剛剛點擊的按鈕。

最簡單的方法是使所有按鈕都不可對焦,使用JButton#setFocusable並將其傳遞給false

以編程方式發送擊鍵到活動窗口,您可以使用Robot

例如...

Robot bot = new Robot(); 
bot.setAutoDelay(100); // I find a small delay between events helps a lot... 
bot.keyPress(KeyEvent.VK_A); 
bot.keyRelease(KeyEvent.VK_A); 

你可能也想看看Window#setAlwaysOnTopWindow#setFocusableWindowState

+0

感謝您的回答。有用。但是,請你告訴我如何用bot.mousePress()方法來做到這一點,因爲我的鍵盤上的所有字符都是JButton。他們都創建ActionListeners。 –

+0

你是什麼意思?有一個例子 – MadProgrammer