Java swing: die Umsetzung meiner Comboboxmodel für JComboBox
Muss ich mein Kombinationsfeld haben kurze Namen von Organisationen. Das problem ist, ich kann finden Sie Organisationen, die Namen in der dropdown-Liste, aber kippe tatsächlich wählen Sie es. Wo ist mein Fehler?
public class ToComboBoxModel extends AbstractListModel implements ComboBoxModel {
private String selectedItem;
private List<Organization> orgs;
public ToComboBoxModel(List orgs) {
this.orgs = orgs;
}
@Override
public String getSelectedItem() {
return selectedItem;
}
@Override
public void setSelectedItem(Object newValue) {
for (Organization o: orgs){
if (newValue==o){
selectedItem=o.getShortName();
break;
}
}
}
@Override
public int getSize() {
return orgs.size();
}
@Override
public String getElementAt(int i) {
return orgs.get(i).getShortName();
}
}
Einstellung Modell:
query =session.createQuery("from Organization where isMain = 0");
List orgs=query.list();
toComboBox.setModel(new ToComboBoxModel(orgs));
Vielen Dank im Voraus!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, es ist, dass Ihre
setSelectedItem()
Methode vergleicht Objekte mit==
eher als.equals()
Erwägen Sie die Verwendung einer DefaultComboBoxModel, die bereits implementiert nützliche Methoden.
Bearbeiten:
Auch nach den Docs Sie sein sollte ruft alle registrierten
ListDataListener
Objekte, wenn setSelected genannt wird.Mit einem
DefaultComboBoxModel
ist ziemlich einfach. Erstellen Sie eine neueDefaultComboBoxModel
fügen Sie die Elemente, die Sie wollen, es zu enthalten, dann rufen SiegetSelectedItem()
um das element abzurufen, das aktuell ausgewählt ist.