JComboBox установить выбранный элемент не работает должным образом - PullRequest
1 голос
/ 20 октября 2010

Я пытаюсь заполнить свой JComboBox следующими элементами:

public class DropDownItem {

private String text;
private int id;

public void setText(String text) {
    this.text = text;
}

public void setId(int id) {
    this.id = id;
}

public String toString() {
    return text;
}

public int getId() {
    return id;
}


public boolean equals(Object i) {
    System.out.println("i is: " + i);

    if(i instanceof Integer) {
        if((Integer)i == (Integer)id) {
        System.out.println("It's me!");
        return true;
        }
        else {
            System.out.println("I was asked if I was " + (Integer)i + " but I'm " + id + " as I'm " + text);
            return super.equals(i);
        }
    }
    else return super.equals(i);
}

}

Однако у меня возникают проблемы с использованием setSelectedItem JComboBox.Я передаю setSelectItem int и, как вы можете видеть сверху, я пытался убедиться, что он выбран, когда он правильный.У меня проблема в том, что проверяется только выбранный элемент, что для меня очень странно.Я подтвердил это, добавив заявление на печать, которое печатается только один раз.

Есть идеи?

Спасибо

1 Ответ

3 голосов
/ 20 октября 2010

Ваша реализация метода equals () неверна. Объект никогда не будет целым числом, он всегда будет DropDownItem. Я предполагаю, что равенство будет проверено путем сравнения «id» текущего объекта с «id» объекта, переданного методу equals ().

Редактировать: если вы добавляете новый элемент в модель и хотите выбрать его, ваш код должен выглядеть примерно так:

DropDownItem item = new DropDownItem();
item.setId(1);
item.setText("one");
comboBox.addItem( item );
comboBox.setSelectedItem( item );

Edit2: метод equals будет выглядеть примерно так:

DropDownItem item = (DropDownItem)i;

return getId() == item.getId();

Теперь, когда вы получаете целочисленное значение из базы данных, вы можете просто сделать:

DropDownItem item = new DropDownItem();
item.setId(???);
comboBox.setSelectedItem( item );

Даже если вы не указали описание, элемент будет выбран, потому что метод equals заботится только об идентификаторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...