【问题标题】:java index of selected item arraylist所选项目arraylist的java索引
【发布时间】:2018-07-02 16:26:09
【问题描述】:

在 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。我想获取刚刚单击/更改了arraylist中哪个框的索引。没有显式类型转换,我得到相同的结果。

【问题讨论】:

    标签: java arraylist indexof


    【解决方案1】:

    问题出在这段代码中:

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

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

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

    【讨论】:

    • 呃!是的,这就是问题所在。很抱歉给大家带来了麻烦。 Ugggh,现在感觉很愚蠢,但非常感谢您的帮助。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    相关资源
    最近更新 更多