JComboBox Frage

an den Tabellen kann ich nichts ändern weil die so vorgegeben sind und nicht geändert werden dürfen!

Gibt es eine möglichkeit die ID versteckt mit der ComboBox zu übergeben?

Gruß
Happymaker
 
Original geschrieben von Happymaker
Das hilft mir aber auch nicht weiter!
Aber natürlich, das ist genau Dein Fall.

Als erstes brauchst Du eine Wrapper-Klasse für Deine Tabelle Anrede:
Code:
class Anrede {
   private String Id;
   private String name;

   public Anrede(String Id, String name) {
      this.Id = Id;
      this.name = name;
   }

   public String toString() {
      return name;
   }
}
Jetzt musst Du die fillTitleComboBox()-Methode entsprechend anpassen:
Code:
...
while (data.next()) {
   String Id = data.getString(1);
   String name = data.getString(2);
   combo.addItem(new Anrede(Id, name));
}
...
Die Methode getSelectedItem() von Deiner ComboBox liefert dann logischerweise ein Object vom Typ Anrede. Daraus kriegst Du dann die ID:
Code:
...
Anrede anrede = combo.getSelectedItem();
String Id = anrede.Id;
String name = anrede.name;
...
 
Danke schon mal!
Wo kommt denn die Klasse Anrede hin?
in meinen Datenbank-layer?
in eine seperate java datei?

Das ändern mit der Methode verstehe ich und weiß wo ich es anwenden muss!

Aber der Aufruf
...
Anrede anrede = combo.getSelectedItem();
String Id = anrede.Id;
String name = anrede.name;
...

wo mache ich den?

Ich bin anfänger deshalb so dumme fragen!

Aber schonmal danke für deine mühe die du dir wegen mir machst!

Gruß
Happymaker
 
OK, Deine ursprüngliche Frage war ja:
Original geschrieben von Happymaker
Wenn ich in der Graphischen Oberfläche jetzt in der Anrede einen Wert in der ComboBox ausgewählt habe wie komme ich wieder auf die ID?
Genau an der Stelle benutzt Du diesen Code, um auf die ID zu kommen:
Code:
Anrede anrede = (Anrede) combo.getSelectedItem();
String Id = anrede.Id;
Original geschrieben von Happymaker
Wo kommt denn die Klasse Anrede hin?
Die Klasse machst Du am besten als innere Klasse von DBConnect, solange sie nur dort benutz wird.
 
Wenn ich den code hier einfüge und anpasse

Anrede anrede = (Anrede) combo.getSelectedItem();
String Id = anrede.Id;

dann bekomme ich einen fehler:

an.Id cannot be resolved or is not a field

weiß nicht was der bedeutet

Die klasse hab ich auch schon erstellt besser gesagt angepasst!
und die Methode hab ich auch schon angepasst!

danke

Happymaker
 
Danke
hat sich schon erledigt!
Hab mir in der Klasse Anrede eine eigene Methode geschrieben die mir die ID zurückgibt! perfekt!

Danke für deine Hilfe!

Gruß

Happymaker
 
Aua! OOP ...

Original geschrieben von Vincentius
OK, Deine ursprüngliche Frage war ja:
Genau an der Stelle benutzt Du diesen Code, um auf die ID zu kommen:
Code:
Anrede anrede = (Anrede) combo.getSelectedItem();
String Id = anrede.Id;

Sowas tut in der Seele weh. :(
Aber ich sehe es inzwischen selbst oft genug, das scheint eine C/C++ Krankheit zu sein, mit public Attributen zu arbeiten. Gewöhnt Euch an, mit getter und setter zu arbeiten. Zumal Eclipse diese sogar automatisch anlegt...

*kopfschüttelnd*
Snape
 
@Snape
Die Klasse Anrede, die weiter oben vollständig beschrieben ist, wurde als eine innere Klasse gedacht, die nur private Attribute besitzt. Da sie nur in der äußeren Klasse benutzt werden kann, ist es völlig legitim, direkt auf deren Variable zuzugreifen.

Bei einer public Klasse würde ich Dir völlig Recht geben.
 
Original geschrieben von Vincentius
@Snape
Die Klasse Anrede, die weiter oben vollständig beschrieben ist, wurde als eine innere Klasse gedacht, die nur private Attribute besitzt. Da sie nur in der äußeren Klasse benutzt werden kann, ist es völlig legitim, direkt auf deren Variable zuzugreifen.

Bei einer public Klasse würde ich Dir völlig Recht geben.

Können innere Klassen keine getter und setter?
 
Zurück