setSelectedItem bei ComboBox mit zwei Spalten?

Alles was mit Swing und AWT zu tun hat

Moderatoren: wegus, Olek77

Antworten
reiasmus
Beiträge: 67
Registriert: 15.11.2010, 09:36

setSelectedItem bei ComboBox mit zwei Spalten?

Beitrag von reiasmus » 27.04.2011, 10:17

Hallo,

ich habe mir auf folgende Art eine ComboBox mit zwei Spalten definiert:

Code: Alles auswählen

class User
{
private String username;
private int userid;
public User(String uname, int uid)
{
username = uname;
userid = uid;
}
public String toString()
{
return username;
}
}
JComboBox combo;
combo.addItem(new User("Frank",1));
Wie geht in diesem Fall ein setSelectedItem auf Basis der vorhandenen ID?

ebaumann
Beiträge: 288
Registriert: 22.01.2009, 08:53
Wohnort: Würzburg
Kontaktdaten:

Re: setSelectedItem bei ComboBox mit zwei Spalten?

Beitrag von ebaumann » 28.04.2011, 10:09

Verstehe ich das richtig: Im ComboBoxModel sind Objekte des Typs User und die ComboBox soll ein User-Objekt mit bestimmter userid auswählen über ComboBox.setSelectedItem()?

Da setSelectedItem() Objekte mit deren equals()-Methode vergleicht, ist equals() entsprechend zu implementieren. Ausgehend davon, dass ein User anhand des Field userid (eindeutig) identifiziert ist:

Code: Alles auswählen

public class User {
    private int userid;

    ...

    @Override 
    public boolean equals(Object object) {
        if (object == this) {
            return true;
        }

        if (!(object instanceof User)) {
            return false;
        }

        User otherUser = (User) object;

        return userid == otherUser.userid;
    }
}
Es reicht dann folgender Code:

Code: Alles auswählen

int userIdForSelection = 1;
comboBox.setSelectedItem(new User(null, userIdForSelection));

reiasmus
Beiträge: 67
Registriert: 15.11.2010, 09:36

Re: setSelectedItem bei ComboBox mit zwei Spalten?

Beitrag von reiasmus » 02.05.2011, 10:12

Besten Dank, hat mir sehr geholfen.

Antworten