簡體   English   中英

按鍵綁定不適用於JFrame

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM