Hallo,
ich will mir eine eigene ComboBox bauen, mit einem enthaltenen DefaultComboBoxModel. Der Code dazu sieht folgendermaßen aus:
Komischerweise steht am Anfang in der ComboBox "A" drin, soll ja auch so sein. Nur wenn ich einen anderen Wert auswähle, ist die ComboBox danach leer. Es liegt daran, dass die Methode "setSelectedItem" zweimal aufgerufen wird. Einmal mit dem richten Wert, beispielsweise "C", und dann wird die Methode nochmals aufgerufen, mit einem leeren String "", dadurch wird logischerweise mein selectedEntry wieder überschrieben.
Wie kommt das?
Danke !
P.S.: Ich kann den leeren String in der Methode "setSelectedItem" schon abfangen, dann funktioniert auch alles. Aber hier läuft doch trotzdem irgendwas falsch, oder?
ich will mir eine eigene ComboBox bauen, mit einem enthaltenen DefaultComboBoxModel. Der Code dazu sieht folgendermaßen aus:
Code:
public class JTestComboBox extends JComboBox {
private MyComboBoxModel model;
public JTestComboBox() {
// model
model = new MyComboBoxModel();
setModel(model);
// listener
addActionListener(this);
}
private class MyComboBoxModel extends DefaultComboBoxModel {
private List<String> entries;
private String selectedEntry;
public MyComboBoxModel() {
// lists
entries = new ArrayList<String>();
// add fields
entries.add("A");
entries.add("B");
entries.add("C");
entries.add("D");
selectedEntry = entries.get(0);
}
@Override
public Object getElementAt(int index) {
return entries.get(index);
}
@Override
public int getSize() {
return entries.size();
}
@Override
public void setSelectedItem(Object anObject) {
selectedEntry = (String)anObject;
System.out.println("setSelectedItem: " + selectedEntry);
}
@Override
public Object getSelectedItem() {
return selectedEntry;
}
}
}
Komischerweise steht am Anfang in der ComboBox "A" drin, soll ja auch so sein. Nur wenn ich einen anderen Wert auswähle, ist die ComboBox danach leer. Es liegt daran, dass die Methode "setSelectedItem" zweimal aufgerufen wird. Einmal mit dem richten Wert, beispielsweise "C", und dann wird die Methode nochmals aufgerufen, mit einem leeren String "", dadurch wird logischerweise mein selectedEntry wieder überschrieben.
Wie kommt das?
Danke !
P.S.: Ich kann den leeren String in der Methode "setSelectedItem" schon abfangen, dann funktioniert auch alles. Aber hier läuft doch trotzdem irgendwas falsch, oder?