java индекс выбранного элемента - PullRequest
0 голосов
/ 02 июля 2018

В Java я пытаюсь определить, какой JComboBox в ArrayList был просто нажат. Ниже приведен код:

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. Я хотел бы получить индекс того, какая ячейка в массиве была только нажата / изменена. Я получаю те же результаты без явного приведения типов.

1 Ответ

0 голосов
/ 02 июля 2018

Проблема в этом сегменте кода:

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);
}
...