Java 如何通过鼠标单击可编辑JCombobox从弹出菜单中自动选择项目后修改JTextField的值

Java 如何通过鼠标单击可编辑JCombobox从弹出菜单中自动选择项目后修改JTextField的值,java,swing,jcombobox,Java,Swing,Jcombobox,我有一个可编辑的JCombobox。我已经完成了从数据库加载数据所需的操作 加载数据后,我添加了一些额外的数据,如.next。或者——出于特定的原因。下一个或者-只有当它们在弹出菜单中突出显示时才起作用。我已经设计了它们的工作方式 但是我不想查看/选择。下一步。或-在JComboBox的JTextField中 为此,我重写JCombobox searchCBX.addItemListener(new ItemListener() { @Override publi

我有一个可编辑的JCombobox。我已经完成了从数据库加载数据所需的操作

加载数据后,我添加了一些额外的数据,如.next。或者——出于特定的原因。下一个或者-只有当它们在弹出菜单中突出显示时才起作用。我已经设计了它们的工作方式

但是我不想查看/选择。下一步。或-在JComboBox的JTextField中

为此,我重写JCombobox

searchCBX.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange() == ItemEvent.SELECTED
                    && (".next.".equals(e.getItem()) || "-".equals(e.getItem()))) {
                searchTF.setText("");
            }
        }

    });
这里,searchCBX是我所需的组合框,searchTF是searchCBX的文本字段。当我尝试选择时,它工作正常。下一步。或者-通过从键盘上滚动JPOppMenu,searchTF自动变为空

现在,当我尝试选择时,问题出现了。下一步。或-通过鼠标单击可见的弹出菜单。它会自动被选中

我正试图推翻mouseListener,但它不起作用

searchCBX.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent me) {
            if ((".next.".equals(searchTF.getText()) || "-".equals(searchTF.getText()))) {
                searchTF.setText("");

            }
        }
    });

那么,在鼠标单击jComboBox弹出菜单(value为.next)后,如何从searchTF中删除所选数据呢。或-。如果有任何帮助,我将不胜感激。

据我所知,一旦您选择了。下一步,您需要删除searchTF的文本。或者-从searchCBX的下拉列表中。如果是这样的话,你不必担心这里的鼠标听器。只有ItemStageChage事件可以完成这项工作

以下是代码的必需部分:


我不能拍照。尝试拍摄快照时弹出菜单自动隐藏…您知道:很抱歉,这不起作用…searchCBXItemStateChangedItemEvent evt在我从键BorBord选择并输入键时起作用。。。但当鼠标单击时,它会设置select值,这可能是它的默认行为……但我检查itemStateChange也会智能地调用。因此,在调用itemStateChange之后可能会发生选择@马杜山佩拉拉酒店
public class Example extends JFrame {

private JComboBox searchCBX;
private JTextField searchTF;

/**
 * Creates new form Example
 */
public Example() {

    initComponents();

}

private void initComponents() {
    searchCBX = new JComboBox();
    searchTF = new JTextField();

    searchCBX.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent evt) {
            searchCBXItemStateChanged(evt);
        }
    });
}

private void searchCBXItemStateChanged(ItemEvent evt) {
    if (evt.getStateChange() == ItemEvent.SELECTED
            && (".next.".equals(evt.getItem()) || "-".equals(evt.getItem()))) {
        searchTF.setText("");
    } else {
        searchTF.setText(searchCBX.getSelectedItem().toString());
    }
}
}