Swing:检测JComboBox中的Enter?

Jas*_*n S 3 java swing jcombobox

我已经尝试在JComboBox上使用getInputMap()+ getActionMap(),它似乎没有任何效果.

我在JComboBox上尝试过addActionListener()/ addItemListener(),我似乎无法区分选择更改与按Return/Enter键的人.

有什么建议?在我的应用程序中,我希望Return/Enter键比仅选择更强,这是一个选择+应用操作.


这是我设置密钥绑定的代码.note("hit ENTER")当组件是a时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);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

Jas*_*n S 5

啊哈,这似乎工作:note("cb editor action")当我在组合框字段中按Enter键时调用.

        comboBox.getEditor().addActionListener(new ActionListener() {
            @Override public void actionPerformed(ActionEvent arg0) {
                note("cb editor action");
            }               
        });
Run Code Online (Sandbox Code Playgroud)