Swing: обнаружить Enter в JComboBox? - PullRequest
3 голосов
/ 12 февраля 2011

Я пытался использовать getInputMap () + getActionMap () на JComboBox, и это, похоже, не дает никакого эффекта.

Я пробовал addActionListener () / addItemListener () на JComboBox, и я не могу отличить изменение выбора от кого-то, кто нажал клавишу Return / Enter.

Есть предложения? В моем приложении я хочу, чтобы клавиша Return / Enter была сильнее, чем просто выделение, это действие выбора + применения.


Вот мой код для настройки привязки клавиш. Он отлично работает (например, вызывается note("hit ENTER")), когда компонент является JList, но не работает, когда компонент является JComboBox.

private void setupApplyProfile(final JComponent component, final MyComboBoxModel mcbm)
{   
    String enterAction = "applyItem";
    KeyStroke enterKey = KeyStroke.getKeyStroke("ENTER");
    component.getInputMap().put(enterKey, enterAction);
    component.getActionMap().put(enterAction, new AbstractAction()
    {
        @Override public void actionPerformed(ActionEvent e) {
            note("hit ENTER");
            applySelectedProfile(mcbm);
        }
    });
}

Ответы [ 2 ]

5 голосов
/ 15 февраля 2011

Ага, похоже, это работает: note("cb editor action") вызывается, когда я нажимаю Enter в поле со списком.

        comboBox.getEditor().addActionListener(new ActionListener() {
            @Override public void actionPerformed(ActionEvent arg0) {
                note("cb editor action");
            }               
        });
3 голосов
/ 12 февраля 2011

В моем приложении я хочу, чтобы клавиша Return / Enter была сильнее, чем просто выбор, это действие выбора + применения.

Если я понимаю вопрос, вы можете использовать следующее:

comboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);

ActionEvent и ItemEvents будут запускаться только при выборе элемента из выпадающего списка при использовании мыши или клавиши ввода.Электронные события не будут запускаться, если вы перемещаетесь по выпадающему списку с помощью клавиш со стрелками вверх / вниз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...