JComboBox nimmt Auswahl nicht an

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Also ich erklär mein Prob am besten an nem Bsp:
Ich hab 2 JComboBoxen auf mein GUI. Die eine hat eindeutige Nummern und die andere beliebige Strings als Elemente. Die Elemente werden mittel Vector übergeben.
Das Bsp:
Box1 Box2
1 abcde
2 ghjkl
3 test
4 test

Die Daten sind zusammenhängend, dass heisst, dass Nr 1 logisch dem Wert 'abcde' zugewiesen is usw.
Wähle ich jetzt also die 2 in der Box1 aus, wird ein ActionEvent ausgelöst, dass bei der Box2 auf den Index der in Box1 gewählten Elements umsetzt. Hier wäre das also 'ghjkl', das klappt wunderbar.
Das ganze funktioniert auch umgekehrt. Also wähl ich in Box2 'abcde' aus, wird in Box1 auf '1' gesetzt.
Mein Problem is nun wenn in der Box2 2 gleiche Elemente vorhanden sind, hier 'test'.
Ich wähle in Box1 das 4. Element aus und es soll in Box2 auch das Element an der 4. Stelle ('test') ausgewählt werden. Bei Box2 wird bei dem umsetzen auch ein ActionEvent ausgelöst, und aus unerklärlichen Gründen wird dann in Box1 auf '3' umgesetzt, weil in Box2 auch 'test' an dieser Stelle steht.

Hat die JComboBox irgendwie probs mit doppelten Elementen?
Ich hab echt keine Ahnung an was es liegt. Die abfragen und zuweisungen mit getSelectedIndex/setSelectedIndex sind alle richtig. Bei nicht doppelten Elementen klappt alles auch wunderbar
 
Hat die JComboBox irgendwie probs mit doppelten Elementen?
Ich weiss nicht wie das bei der JComboBox ist, jedenfalls kann man den JTree sehr schön aus dem Konzept bringen, wenn man doppelte Einträge benutzt.

Evtl. ist es notwendig eine Wrapper-Klasse für Strings zu schreiben. Naja, das ist nicht schwer, und du kannst das ja mal ausprobieren:
Code:
public class StringWrapper{
  private String string;

  public StringWrapper( String string ){
    this.string = string;
  }

  public String toString(){
    return string;
  }

  public String getString(){
    return string;
  }
}
 
also das is echt nen interessanter Ansatz mit der "Wrapper"-Klasse und dazu funktioniert er auch noch.
Ich dank dir vielmals....hat mich echt heut den halben Tag beschäftigt *gggrrrr*
falls jemand mehr zur internen Verarbeitung der Daten bei der JComboBox hat, dann nur her damit
 
Kurze Frage: Arbeitest Du eigentlich mit 'getSelectedItem' oder mit 'getSelectedIndex' ? Wenn Du 'getSelectedIndex' verwendest, so sollten die von Dir angesprochenen Probleme eigentlich nicht auftauchen.

Grüsse, Sky
 
ja definitiv benutz ich getSelectedIndex. Mit getSelectedItem wärs ja noch nachvollziehbar wieso falsch indexiert wird.
Aber wie gesagt, da nicht klar is wie die Daten intern abgelegt werden, kann man nur vermuten. Schon möglich das in der verwendeten Datenstruktur die Werte nicht doppelt abgespeichert werden und somit das Problem seinen Lauf nimmt.
 
Also, sofern Du das DefaultListModel verwendest, werden die Daten in einem Vector abgelegt. Bei "add" oder "addElement" wird zunächst der neue Index festgelegt und das Objekt dann dran gehangen. Die Methode 'getSelectedIndex' liefert dir dann das erste vorkommen als int zurück.

Vergleiche:
Returns the first item in the list that matches the given item. The result is not always defined if the JComboBox allows selected items that are not in the list. Returns -1 if there is no selected item or if the user specified an item which is not in the list.

(Hab ich bis eben auch nicht gewußt. Bei mir hat das bisher nie Probleme gemacht, weil ich immer mein einges Model nutze und nicht den Default...)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben