[英]Key bindings not working for JFrame
我已經閱讀了幾個主題,展示了如何創建KeyBinding,但是,沒有一個主題對我有用。 我的JFrame有一個JMenuBar,對於菜單項,NetBeans正確生成了如下代碼:
mniExit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK));
mniExit.setText(bundle.getString("Menu.File.Exit")); // NOI18N
mniExit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mniExitActionPerformed(evt);
}
});
mnuFile.add(mniExit);
但是,隱藏菜單時,僅此綁定不可見。 我已經嘗試過類似的東西:
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(mniExit.getAccelerator(), "exit");
getRootPane().getActionMap().put("exit", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
mniExit.doClick();
}
});
但這根本行不通。 我究竟做錯了什么?
提前致謝!
您聲明
但是,隱藏菜單時,僅此綁定不可見。 我已經嘗試過類似的東西:
我在這里猜測,但是我不確定如果按鈕或菜單不可見,可以單擊它。 為簡化起見,我將創建一個ExitAction類,該類是從AbstractAction擴展的類,該類作為Action分配給需要它的所有JMenuItems,JButtons或鍵綁定。 如果它們都共享同一個ExitAction對象,則可以根據需要立即禁用Action(以及相應的菜單項和按鈕)。
如果這樣做沒有幫助,請再次創建並發布一個最小的示例程序 ,在其中創建最小的程序,該程序可以運行,編譯,不需要任何外部依賴項(圖像,數據庫),並為我們演示了您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.