java JComboBox操作 2 周,1 日 Questions & Answers 1250 有没有办法区分使用setSelectedBoundValue和单击JComboBox以编程方式更改的JComboBox索引
# 1 楼答案 setSelectedBoundValue 没听说过那种方法吗 Is there a way to distinguish between a JComboBox's index being changed programatically 不是真的。您可以删除侦听器: comboBox.removeActionListener(...); comboBox.setSelectedItem(...); comboBox.addActionListener(...); 您可以设置自己的类变量 manualSelection = true; comboBox.setSelectedIndex(...); manualSelection = false;
# 2 楼答案 这是一个丑陋的和真正的黑客,但是很有效 ActionEvent包含一个字段修饰符,在本例中,该字段修饰符是鼠标按钮id。因此,使用该字段可以帮助您区分setSelectedIndex或setSelectedValue和鼠标单击(顺便说一句,setSelectedBoundValue不是JComboBox上的方法): box.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (e.getModifiers() != 0) { // ~ mouse button pressed ;) } } });
# 1 楼答案
没听说过那种方法吗
不是真的。您可以删除侦听器:
您可以设置自己的类变量
# 2 楼答案
这是一个丑陋的和真正的黑客,但是很有效
ActionEvent
包含一个字段修饰符,在本例中,该字段修饰符是鼠标按钮id。因此,使用该字段可以帮助您区分setSelectedIndex
或setSelectedValue
和鼠标单击(顺便说一句,setSelectedBoundValue
不是JComboBox
上的方法):