2012-01-20 59 views
2

如何將鍵盤快捷鍵添加到Java小程序中?在小程序中添加鍵盤快捷鍵

我有一個任務(我正在考慮榮譽計算機科學)讓我的名字旋轉在一個圓圈。 我用了一個無限循環,每次我想結束時,我必須去任務管理器並結束程序。我可以添加退出小程序的快捷方式嗎?

例如,如果我按空格鍵,它將更改爲程序的另一部分。

我在Oracle的網站上查看了"How to Use Key Bindings",但我無法理解它。

+2

*「?我必須去任務管理器,結束程序我可以添加退出小程序的快捷方式」 *放一個切換按鈕到停止/啓動的北方。順便說一句 - 幾乎所有可以在應用程序中完成的事情。可以在applet中完成,但由於焦點(這個applet可能沒有輸入焦點並且可能被標記爲不可聚焦),這種情況會更棘手。 –

回答

3

如果你正在使用Swing(如果你正在創建一個JApplet),那麼是的,Key Bindings是要走的路。他們怎麼會迷惑你?順便說一句,我知道這不是直接關係到你的問題,但如果你的applet是一個Swing JApplet,我不會使用無限循環來做動畫,而是我會用一個擺動計時器。如果使用無限循環,則必須注意a)在後臺線程中執行無限循環,並且b)在Swing事件分派線程(或EDT)的循環內進行大部分Swing調用,否則您可能會凍結主搖擺螺紋。 Swing Timer可以爲您完成所有這些工作,因此使用起來更加簡單。

+0

對不起,延遲迴復。我不明白如何將密鑰綁定添加到程序中。你能給我一個例子,說明爲了獲得密鑰綁定,我必須添加哪些代碼? –

+0

@ the_pwner224:谷歌的鍵綁定教程,因爲它會告訴你所有你需要知道的。如果你卡住了,然後再回來。 –

+0

@ the_pwner224:編輯:我現在記得你已經有了鏈接,但你所說的只是你不明白,但沒有具體說明。沒有特定的問題,除了建議您重新閱讀教程之外,我們無法幫助您。考慮問一個更具體的問題。 –

1

該教程的所有內容說您需要一個KeyStroke,一些密鑰Object和一個Action來創建密鑰綁定。

要創建您的KeyStroke,請查看靜態helper methods,他們應該解釋如何獲得您需要的正確KeyStroke

您可以使用任何舊的Object作爲關鍵字(Object key = new Object())。

您需要的最後一件事是創建Action。我建議擴展AbstractAction,因爲它已經爲您執行了許多Action的方法。

把你的鍵綁定在一起,做到以下幾點:

JComponent c = ... 
KeyStroke keyStroke = ... 
Object key = ... 
Action a = ... 

c.getInputMap().put(keyStroke, key); 
c.getActionMap().put(key, a); 
+0

看看[Hovercraft Full of Eels](http://stackoverflow.com/a/8935481/758280)回答,你應該考慮使用Swing Timer。 – Jeffrey

+1

一個常見的混淆之處是使用'getInputMap(int condition)'覆蓋。有時需要一些試驗才能使用正確的條件,我認爲在原始海報的情況下可能是'JComponent.WHEN_IN_FOCUSED_WINDOW'。該教程解釋了相當多的這一點。 1+票。 –

+0

@HovercraftFullOfEels糟糕,忘了提。 – Jeffrey