Combobox befüllen im (Programmablauf)!

Lautsprecher

Erfahrenes Mitglied
Hallo,
ich habe gerade ein "Befüllungsproblem" mit meiner Combobox!
Kurze Info zum Programmaufbau:
Swing-Applikation mit einer JTable, 7 Buttons, 6 Textfeldern, 12 Labels, etc.

Abarbeitung: public class test

1. Imports, Dekl. (eh klar)
2. von der main-Methode zunächst in eine init-Methode
3. in der init-Methode wird als erstes this.setContentPane(getJContentPane()); aufgerufen
danach erfolgt in der init-Methode noch Visible, Enabled setzen von bestimmten
Komponenten

von der getJContentPane() wird dann auf die ganzen anderen Methoden
getJButton(), getJComboBox() aufgerufen, in denen dann die Komponenten generiert
werden.

4. In der ComboBox-Methode lese ich dann das erste Mal meine Mitarbeiterdaten aus
Das klappt hier noch ganz gut!
private JComboBox getComboMitarbeiternamen() {
Code:
if (ComboMitarbeiternamen == null) {
Vector kennung = mitarbeiterauslesen();
ComboMitarbeiternamen = new JComboBox(kennung);
ComboMitarbeiternamen.setSelectedItem(benutzerauswahl);
ComboMitarbeiternamen.setBounds(new java.awt.Rectangle(675,164,326,45));
ComboMitarbeiternamen.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 24));
ComboMitarbeiternamen.addItemListener(new java.awt.event.ItemListener() 
{
	public void itemStateChanged(java.awt.event.ItemEvent e) 
	{	
	      if (e.getStateChange() == 1)
	     {
	      }
	}
       });
   }
		return ComboMitarbeiternamen;
}



Zur Laufzeit:
... soll der Benutzer dann wählen können ob er alle Mitarbeiter oder nur die Mitarbeiter einer Gruppe haben möchte.
Und genau hier hängts. Den Schalter für Gruppe oder alle setze ich in der actionPerformed-Methode des Buttons. Doch wie bringe ich dem Pgm jetzt bei,
dass er nochmal erneut auslesen muss und die Combobox befüllen muss.

Ich hab schon versucht:
Code:
Vector kennung = mitarbeiterauslesen();
ComboMitarbeiternamen = new JComboBox(kennung);
in die ActionPerformed meines Buttons einzubauen, aber keine Reaktion.

Wie kann ich von dort aus trotzdem erreichen, dass die Box erneut gefüllt wird?
gibt es irgendeine Möglichkeit wie
Combobox.getItem(kennung) oder so, in der man einfach den Vector übergibt?

Grüße
 
Wie löst man einen Vektor auf!

Hi,
ich bin jetzt schon ein wenig weiter gekommen.

Unter meiner Button Action-Performed-Methode habe ich folgendes angegeben:

Code:
ComboMitarbeiternamen.addItem(kennung);

Jedoch erfolgt jetzt logischer Weise in der Combobo ein langer String

[Name, 1234, Name2, 3456, ...]

Wie kann man diesen Vektor jetzt noch auflösen?
 
Moin,
ich würde zunächst mit removeAllItems alle alten Einträge löschen und dann über Deinen Vector iterieren und jedes einzelne Element mit addItem hinzufügen. Das, was Du hinzufügst, ist hoffentlich ein eigenes Objekt von Dir. Wenn das so ist, brauchst Du in dieser Objektklasse lediglich die toString()-Methode so implementieren, was in der Combobox angezeigt werden soll.
 
Hi Snape,
so ähnlich habe ich mir das auch schon gedacht, das ich irgendwie den Vektor auslesen muss und die einzelnen Stücke dann in der ComboBox hinzu füge. Aber ich weiß nicht wie sowas Code mäßig aussieht.
Java ist gar nicht so leicht, wenn man sich als Anfänger alles selber bei bringt!



Code:
private JButton getJBAbt() {
   if (jBAbt == null) 
   {
      jBAbt = new JButton();
      jBAbt.setBounds(new java.awt.Rectangle(929,123,70,24));
      jBAbt.setText("ABT");
     jBAbt.addActionListener(new java.awt.event.ActionListener() {
	public void actionPerformed(java.awt.event.ActionEvent e) 
	{
                	 selektion = null;
		 selektion = "ABT";
                                 ComboMitarbeiternamen.removeAllItems();
		 Vector kennung = mitarbeiterauslesen();  
                         // mitarbeiterauslesen -> return eines Vektors		 
	      ComboMitarbeiternamen.addItem(kennung)
            }
      });
  }
return jBAbt;
}
 
Hi,
ich denke so muss der Codeabschnitt aussehen:
Code:
    Vector kennung = mitarbeiterauslesen();  
    for ( int i = 0; i < kennung.size(); i++ )
    {
      ComboMitarbeiternamen.addItem(kennung.get(i));
    }

BTW Variablennamen beginnen laut Code Conventions mit einem Kleinbuchstaben.
 
Hi Snape,
danke Dir, jetzt funktioniert es und in meiner Abteilung geht nun ein riesen Freundenschrei umher.
Auf deine 5 Zeilen Code bin ich einfach nicht gekommen. Saß jetzt 2 Tage lang dran!

Danke!
 
Oh, dabei ist das wirklich eine der einfacheren Aufgaben in Java. :)
2 Tage? Musst halt nächstes Mal eher fragen. ;)
 

Neue Beiträge

Zurück