Java项目事件鼠标单击

时间:2015-10-29 11:51:20

标签: java combobox

当用户点击项目时,我必须在组合框中处理事件(而不是当组合框改变状态时)。

我有四个组合框: (1Combo:父类别) (2组合:1类的儿子) (3组合:类别2的儿子) (4组合:第3类的儿子)

每个人都会调用列表来添加另一个项目(所选类别的儿子)。

但我的问题是我有一个itemstatechange事件,我想知道该项是否已被点击,如果组合改变了状态。

public void itemStateChanged(ItemEvent e) {
    if (e.getSource()==jComboBoxCategorias1) {
        handleEventCombo1();
    }
    if (e.getSource()==jComboBoxCategorias2) {
       handleEventCombo2();
    } 
    if (e.getSource()==jComboBoxCategorias3) {
        handleEventCombo3();
    }
    if (e.getSource()==jComboBoxCategorias4) {
        handleEventCombo4();
    }

}

2 个答案:

答案 0 :(得分:0)

您可以将鼠标侦听器添加到组合框并实现mouseClicked方法。

comboBox.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            System.out.println(comboBox.getSelectedItem());
        }
    });

答案 1 :(得分:0)

不要忘记comboBox实际上是一个容器。因此,如果您真的想拥有所有鼠标事件,则应将侦听器添加到它包含的所有组件中。

public void addMouseListener(final MouseListener mouseListener) {
    this.comboBox.addMouseListener(mouseListener);

    final Component[] components = this.comboBox.getComponents();
    for(final Component component : components) {
      component.addMouseListener(mouseListener);
    }

    this.comboBox.getEditor().getEditorComponent().addMouseListener(mouseListener);
  }

请访问swing mouse listeners being intercepted by child components了解详情。