簡體   English   中英

JPanel中的Java swing快捷鍵/鍵綁定

[英]java swing shortcut key / key bindings in a JPanel

我有一個JPanel,里面有很多組件。 當用戶按下“a”時,我想做某事並使用“a”,除非用戶在文本框中(或接受“a”的屏幕的其他部分) - 在這種情況下,我不喜歡我想知道“一個”。

在下面的代碼中,我收到“a”的通知,即使焦點在文本框上(在文本框中鍵入“a”,將“a”放在文本框中,並通知我“a”) 。

        JComponent jc = the panel...;
        InputMap inputMap = jc.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
        ActionMap actionMap = jc.getActionMap();
        inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0), "qcAccept");
        actionMap.put("qcAccept", new AbstractAction("qcAccept") {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("A pressed, " + e);
            }
        });
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0), "qcAccept");

您正在偵聽keyPressed事件。 文本組件偵聽keyTyped事件。 這就是為什么兩個綁定仍然有效。 嘗試:

inputMap.put(KeyStroke.getKeyStroke("typed a"), "qcAccept");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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