1
   public static void comboBoxActionPerform(JComboBox  comboBox)
    {
        String ACTION_KEY = "myAction";

        Action actionListener = new AbstractAction()
        {   
            @Override
            public void actionPerformed(ActionEvent actionEvent)
            {
                JComboBox source = (JComboBox) actionEvent.getSource();
                source.showPopup();
                source.setFocusable(true);
            }
        };

        KeyStroke ctrlT = KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK);
        InputMap inputMap = comboBox.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
        inputMap.put(ctrlT, ACTION_KEY);
        ActionMap actionMap = comboBox.getActionMap();
        actionMap.put(ACTION_KEY, actionListener);
        locationTypeComboBox.setActionMap(actionMap);
    }

私はcomボックスを持っており、上記のメソッドを呼び出して、キー(Ctrl + L)が押されたときにコンボボックスをポップアップします。コンボボックスがポップアップします。しかし、UP/DOWNキーを使用してその中のアイテムを選択することはできません。Ctrl + Lを押しても、コンボボックスがフォーカスされません。それは修正すべき問題かもしれません。コンボボックスを手動で選択すると、上下が正常に機能します。君の力が必要。

4

1 に答える 1

3

探しているメソッドはrequestFocusであり、setFocusableではありません

    Action actionListener = new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            JComboBox source = (JComboBox) actionEvent.getSource();
            source.requestFocus();
            source.showPopup();
            // source.setFocusable(true);
        }
    };

ところで、コンポーネントのactionMapをリセットするのは珍しいことです。

于 2012-09-11T07:36:07.250 に答える