-2
A
回答
4
首先想到:「這很容易,RTFT」,吐出第一代碼片段:
Action action = new AbstractAction("clear text") {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("triggered the action");
}
};
action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F1"));
JToolBar bar = new JToolBar();
bar.add(action);
// set toolbar to frame and be happy
猜按下F1 ...好吧,沒有什麼會發生什麼。
事實證明,工具欄中的按鈕 - 不像它們的菜單副本 - 不支持默認情況下的支持加速鍵。這是意外,我(其他人?),並可能有幾個原因
- 它的鞦韆隊
- 的一時疏忽,他們不會被本機應用程序,以及支持
第二通常情況下,toolBar按鈕可能是一種「雙」菜單項:情況就是這樣,加速器設置在菜單項上(如果所有內容都已正確設置並且在兩者中都使用了相同的操作)被自動神奇地觸發。
現在的問題是,OP是否在他/她的應用程序中也有菜單/欄。完整的答案取決於:如果是這樣,只需使用相同的動作與上述
menu.add(action);
如果是真的一個獨立的工具欄,而不是通過菜單的支持下,稍微更多的工作是參與,基本上爲outlined in a previous answer這是鍵綁定明確添加到添加到工具欄上的按鈕,像:
JToolBar bar = new JToolBar();
JButton toolBarButton = bar.add(action);
toolBarButton.getActionMap().put("myAction", action);
toolBarButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
(KeyStroke) action.getValue(Action.ACCELERATOR_KEY), "myAction");
如果這是一個給定的範圍內許多按鈕,子類JToolBar中,覆蓋加(動作)方法的標準要求,做它在那裏叫超級:
public class JXToolBar extends JToolBar {
public JButton add(Action action) {
JButton button = super.add(action);
KeyStroke stroke = (KeyStroke) action.getValue(Action.ACCELERATOR_KEY);
if (stroke != null) {
// do the input/actionMap config here
}
}
}
相關問題
- 1. 用快捷鍵鎖定搖擺應用軟件
- 2. 如何擺脫Aptana Ctrl-q快捷鍵
- 3. 的Xcode鍵盤快捷鍵來找到捷徑
- 4. 在Visual Studio中鍵入快捷鍵的快捷鍵是什麼?
- 5. 在GTK中查找默認快捷鍵
- 6. 鍵盤快捷鍵刷新搖籃項目的IntelliJ IDEA
- 7. 在Delphi中不是無快捷鍵
- 8. 無法啓用tkinter快捷鍵
- 9. WPF無法識別KeyGestures /快捷鍵
- 10. 有沒有在eclipse中找到函數的快捷鍵?
- 11. 在Silverlight中禁用瀏覽器快捷鍵/快捷鍵?
- 12. 搖擺actionPerformed方法
- 13. 快捷鍵在Eclipse
- 14. 查找:從鍵盤快捷鍵在vim中調用的命令
- 15. C#語法快捷鍵
- 16. 鍵盤快捷鍵在MDI
- 17. SQL Server Management Studio中執行快捷鍵和鍵盤快捷鍵
- 18. intellij想法中的跟蹤快捷鍵
- 19. Winkey應用程序(C#)中的Windows快捷鍵+ [快捷鍵]
- 20. JCheckBox的在Java中搖擺
- 21. 3鍵快捷鍵
- 22. 鍵盤快捷鍵
- 23. 鍵盤快捷鍵
- 24. 鍵快捷鍵,Java
- 25. TextMate:如何找到與鍵盤快捷鍵相關的命令?
- 26. Eclipse聲明快捷鍵F3無法在mac os中工作
- 27. XUL快捷鍵
- 28. jquery快捷鍵
- 29. RapidSQL快捷鍵
- 30. mysql_real_escape_string快捷鍵
我投票結束這個問題 – mKorbel 2011-12-15 09:09:45
咳嗽......也投票結束了這個問題,但是......這並不像我預想的那樣直截了當 - 似乎無法撤銷關閉,嗯。 – kleopatra 2011-12-15 11:20:16