Java Swing:在JComboBox中检测输入?

Java Swing:在JComboBox中检测输入?,java,swing,jcombobox,Java,Swing,Jcombobox,我尝试在JComboBox上使用getInputMap()+getActionMap(),但似乎没有效果 我在JComboBox上尝试了addActionListener()/addItemListener(),但似乎无法区分选择的更改和按回车键/回车键的人 有什么建议吗?在我的应用程序中,我希望Return/Enter键比仅仅选择更强,这是一个选择+应用操作 这是我设置密钥绑定的代码。当组件是JList时,它可以正常工作(例如,调用注意(“点击回车”)),但当组件是JComboBox时,它不

我尝试在JComboBox上使用getInputMap()+getActionMap(),但似乎没有效果

我在JComboBox上尝试了addActionListener()/addItemListener(),但似乎无法区分选择的更改和按回车键/回车键的人

有什么建议吗?在我的应用程序中,我希望Return/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);
        }
    });
}
在我的应用程序中,我希望Return/Enter键比仅仅选择更强,这是一个选择+应用操作

如果我理解这个问题,您可以使用以下内容:

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

仅当使用鼠标或enter键从下拉列表中选择项目时,才会激发ActionEvent和ItemEvents。如果使用向上/向下箭头键浏览下拉列表,则不会触发eEvents。

啊哈,这似乎有效:
注意(“cb编辑器操作”)
在我点击组合框字段中的Enter键时被调用

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

你是如何使用getActionMap()的?嗯,这几乎就是我想要的。问题是,我想创建一个只由回车键触发的事件,而不是通过鼠标选择。换句话说,您从列表中选择一个项目(或在中键入一个),然后通过按回车/回车(或在对话框中点击“应用”按钮)应用该项目。我想我仍然不理解这个问题。你是说从下拉菜单中选择一个项目吗?(因为如果鼠标单击和输入键的工作方式不同,这将是一个糟糕的UI)或者您正在谈论在焦点位于组合框上且下拉列表关闭时使用输入键?如果是这种情况,那么您的组合框是否可编辑?焦点是否在用作编辑器的文本字段上?发布你的SSCCE.Nice,但不适用于Substance:(,侦听器应该添加到combobox本身。