我的意思是,在Web瀏覽器中按'F5'將會刷新網頁,而不管焦點在哪裏。我如何使用GUI應用程序在Java中執行此操作?我可以爲所有組件添加「Kylististener」,但我確定這不是正確的方法。如何使應用程序中的所有組件都響應特定的按鍵事件?
4
A
回答
6
您可以使用Swing的輸入和動作映射機制:
component.getRootPane().getInputMap(JRootPane.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0), "refresh");
component.getRootPane().getActionMap().put("refresh", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
// Code here
}
});
3
的那種任務的最好的辦法是給聽衆註冊成標準KeyboardFocusManager
,就像我最近在this answer解釋。
0
你可以加一個AWTEventListener
到java.awt.Toolkit
AWTEventListener listener = new AWTEventListener() {
@Override
public void eventDispatched(AWTEvent ev) {
if (ev instanceof KeyEvent) {
KeyEvent key = (KeyEvent) ev;
if (key.getID() == KeyEvent.KEY_PRESSED && KeyEvent.getKeyText(key.getKeyCode()).equals("F5")) {
System.out.println(ev);
// TODO something meaningfull
key.consume();
}
}
}
};
Toolkit.getDefaultToolkit().addAWTEventListener(listener, AWTEvent.KEY_EVENT_MASK);
2
另一種選擇是使用菜單欄爲您的應用程序。然後刷新就成爲菜單上的一個菜單項,您可以將F5作爲加速器分配給菜單項。在幕後它會爲你做鍵盤綁定。
這是一個很好的方法,因爲現在你有一個自我文檔化的GUI。用戶可以通過在菜單中搜索各種選項來調用刷新。高級用戶最終會學習加速鍵,甚至不使用鼠標。像所有GUI設計一樣,您應該可以使用鍵盤或鼠標調用函數。
相關問題
- 1. 如何使應用程序響應特定事件(按鈕)
- 2. 在我的應用程序中檢測應用程序中的所有鼠標和按鍵事件
- 3. 如何聽所有應用程序中的按鍵?
- 4. 如何製作響應OnRing事件的iPhone應用程序?
- 5. 如何跟蹤Java應用程序中的所有組件?
- 6. 爲應用程序中的所有按鈕綁定單擊事件
- 7. 如何處理在控制檯應用程序按鍵事件
- 8. 獲取python響應特定的按鍵
- 9. 如何獲取應用程序的所有鼠標事件?
- 10. Silverlight應用程序中的連續按鍵事件
- 11. 如何使本機iOS應用程序響應UIWebView中的點擊事件?
- 12. 如何保持我的所有Django應用程序在特定文件夾中
- 13. 具有特定接口的所有類都應通過事件通知
- 14. vb.net:爲什麼組中的所有控件都不響應啓用/禁用?
- 15. 我的應用程序中的所有控件都與屏幕左側鎖定
- 16. 捕獲我的WPF應用程序中沒有焦點的按鍵事件
- 17. 如何處理Qt控制檯應用程序中的按鍵事件?
- 18. 如何從Qt應用程序模擬非Qt應用程序中的按鍵事件
- 19. 如何使用特定的應用程序配置文件
- 20. 如何使用socket.io發出響應事件的事件?
- 21. Wpf應用程序沒有正確響應事件
- 22. Android活動丟失事件,應用程序沒有響應
- 23. 主要應用程序沒有響應事件?
- 24. 如何最大化應用程序對事件的影響?
- 25. 收聽iOS應用程序中的所有觸摸事件
- 26. 如何通過按下特定鍵退出應用程序?
- 27. 事件處理程序應該直接響應事件嗎?
- 28. Android應用程序中的默認按鍵事件處理程序
- 29. 反應:鍵盤事件處理程序所有'空'
- 30. 如何讓多個組件響應JSF中的單個事件?
[jpanel keylistener]的可能重複(http://stackoverflow.com/questions/4780910/jpanel-keylistener) – Riduidel 2011-01-28 14:13:07
使用KeyboardFocusManager或AWTEventListener將在您可能在您的應用程序中使用的任何窗口上偵聽KeyEvents。通常這種類型的功能屬於特定的窗口,這就是我喜歡Key Bindings方法的原因。解決方案取決於您的要求。 – camickr 2011-01-28 17:08:36