java 所选项目数组列表的索引

java index of selected item arraylist

在 Java 中,我试图确定刚刚单击了 ArrayList 中的哪个 JComboBox。部分代码如下:

private ArrayList<JComboBox<String>>    setTextBoxList;

// basic initialization
public void populateList() {
    String str[] = {"one", "two"};
    for(int i=0; i<2; i++) {
        JComboBox<String> jcb = new JComboBox<String>(str);
        setTextBoxList.add(new JComboBox<String>(str));
        jcb.addActionListener(this);
    }
}

public void actionPerformed(ActionEvent e) {
    Object o = e.getSource();
    if(o instanceof JComboBox) {
        // here's where I'd like to see which box was just changed
        System.out.println("change index "
            + setTextBoxList.indexOf((JComboBox)o) );
    }
}

我的问题是,当我单击并更改其中一个组合框时,显示的索引始终为 -1。我想获取数组列表中哪个框被点击的索引 on/changed。我得到与显式类型转换相同的结果 w/o。

问题出在这段代码:

for(int i=0; i<2; i++) {
    JComboBox<String> jcb = new JComboBox<String>(str);
    setTextBoxList.add(new JComboBox<String>(str)); // <-- error!
    jcb.addActionListener(this);
}

您正在创建两个 JComboBox,而获得侦听器的那个不在列表中。尝试将代码更改为:

for(int i=0; i<2; i++) {
    JComboBox<String> jcb = new JComboBox<String>(str);
    setTextBoxList.add(jcb); // changed line
    jcb.addActionListener(this);
}