2
我的應用程序在左側有一個樹形控件,在右側有許多窗體,選項卡等。當用戶按下Ctrl + F搜索面板出現在左側的樹下,因此用戶可以搜索樹的內容。java中的依賴於上下文的鍵盤綁定Swing
這是通過菜單加速器完成的。
然而,當某個標籤是右開,我想按Ctrl +˚F在這個選項卡中打開搜索面板,在標籤裏面的內容進行搜索。
我已經定義了密鑰此選項卡綁定:
tab.getInputMap(WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK), "showSearch");
tab.getActionMap().put("showSearch", showSearchAction);
showSearchAction
上方打開的選項卡中的搜索面板。
這不起作用。即使當標籤集中時,Ctrl + F仍然打開樹下的搜索面板。
我怎樣才能讓上按Ctrl +˚F發生的動作取決於當前焦點組件上?
都能跟得上。仍然打開樹搜索。 – Alla 2011-03-17 20:14:49
@Alla,在簡單的SSCCE中對我很好。發佈證明問題的SSCCE。 – camickr 2011-03-17 20:53:58
感謝您的SSCCE,現在我明白了。該問題是由調用getInputMap(WHEN_ANCESTOR_OF_FOCUSED)而不是getInputMap(JPanel.WHEN_ANCESTOR_OF_FOCUSED)引起的。改變這個解決了這個問題。它與菜單加速器無關。 – Alla 2011-03-18 08:48:24