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

时间:2015-10-30 04:13:34

标签: java swing jcombobox

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

加载数据后,我会添加一些额外的数据,例如 .next。 - ,原因有很多。 .next。 - 只有在弹出菜单中突出显示时才有效。我已经设计好了他们的工作。

但我不想在JComboBox的JTextField中查看/选择 .next。 -

为此,我重写了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的文本字段。当我尝试通过从键盘滚动JPopupmenu来选择 .next。 - 时,它工作正常,searchTF会自动变为空。

现在当我尝试通过鼠标点击可见的弹出菜单选择 .next。 - 时出现问题。它会自动选中。

我试图覆盖mouseListener,但它无效。

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

            }
        }
    });

那么在鼠标点击值为 .next。 - 的jComboBox弹出菜单后,如何从searchTF中删除所选数据。任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

根据我的理解,您需要在从下拉列表中选择 .next。 - 后删除 searchTF 的文字。的 searchCBX 即可。如果是这样的话,你不必担心这里的MouseListener。只需ItemStageChage事件即可完成工作。

  

以下是代码的必需部分:

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());
    }
}
}