有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JComboBox操作

有没有办法区分使用setSelectedBoundValue和单击JComboBox以编程方式更改的JComboBox索引


共 (2) 个答案

  1. # 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. # 2 楼答案

    这是一个丑陋的和真正的黑客,但是很有效

    ActionEvent包含一个字段修饰符,在本例中,该字段修饰符是鼠标按钮id。因此,使用该字段可以帮助您区分setSelectedIndexsetSelectedValue和鼠标单击(顺便说一句,setSelectedBoundValue不是JComboBox上的方法):

    box.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if (e.getModifiers() != 0) {
                // ~ mouse button pressed ;)
            }
        }
    });