当用户点击项目时,我必须在组合框中处理事件(而不是当组合框改变状态时)。
我有四个组合框: (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();
}
}
答案 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了解详情。