Zwei JComboBoxen

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

Guest

Gast
Hi Leute,

ich habe ein Problem. Ich habe zwei ComboBoxen in zwei unterschiedliche Panels "eingebaut", habe diese dann mit Arrays gefüllt. Dann habe ich für die erste ComboBox ein ItemListener verwendet und, was auch funktioniert hat, auf den Inhalt mit "if" zugegriefen. Dieser Inhalt sollte dann in einer TextArea erscheinen.

Jetzt mein Problem: Ich habe versucht auch auf die zweite ComboBox im Programm zuzugreifen, auch mit der "if-Abfrage", die ich ebenfalls in der "public void itemStateChanged(ItemEvent e)" eingebunden habe und dann plötzlich...die Überraschung. Wenn ich die zweit ComboBox anklicke erscheint auch der Inhalt von der ersten aber nur einmal und wenn ich in der zweiten einen Punkt auswähle, erscheint der Inhalt der ersten ebenfalls.

So sehen meine Anmeldungen aus, für die Objekte

cb1.addItemListener(this);
cb2.addItemListener(this);


Ich weiss nicht ob mich jeder verstanden hat was ich meine....aber vielleicht... :autsch:

Danke im voraus... 😀

monet123
 
eigentlich ja, eine "if-Abfrage" sieht so aus -->

public void itemStateChanged(ItemEvebt e)
{
if(cb1.getselectedIndex() == 0)
{ lb1.setText("Texte")
lb2.setText("Texte2")
}
}
if(cb2.getSelectedIndex() ==0)
{ lb3.setText("Textxxx")
lb4.setText("Texteyyy")
}
}
und wenn ich z.B. nun die "cb2" wähle erscheint auch der Inhalt des anderen arrays in den anderen Labels und nicht nur in den vorgessehen...

monet123
 
du unterscheidest aber hier doch nichts. Beide JComboBoxen haben doch immer ein selektiertes Element. Du brauchst sowas wie

Code:
if (e.getSource() == combobox1) {
   // combobox 1 bearbeiten
}
else if (e.getSource() == combobox2) {
  // combobox 2 bearbeiten
}

[edit] Achso ... falsch verstanden 😳 Schau dir den Post von SlaterB an
 
@ monet123:
dein Code enthält nach
lb2.setText("Texte2")
zwei schließende geschweifte Klammern, macht das Sinn?


versuche mal
Code:
  public void itemStateChanged(ItemEvebt e)
  {
    if(cb1.getselectedIndex() == 0)
    {
      System.out.println("cb1.si == 0, also lb1.setText...");
      lb1.setText("Texte")
      lb2.setText("Texte2")
    }
  
    if(cb2.getSelectedIndex() ==0)
    { 
      System.out.println("cb2.si == 0, also lb3.setText...");
      lb3.setText("Textxxx")
      lb4.setText("Texteyyy")
    }
}
wenn beide Meldungen erscheinen, dann ist das so,
am Anfang dürften ja auch bei beiden Boxen der der SelectedIndex 0 sein,

oder was soll denn stattdessen passieren?
wovon soll die Aktion abhängen von nicht vom Index,
vielleicht von der ausgewählten Komponente?
 
es soll folgentes passieren:

Wenn ich aus der Box cb1 eine Komponente auswähle sollen auch nur die Daten erscheinen die in die mit dieser Komponente verbunden sind und nicht noch zusätzlich die Daten, die mit der Box cb2 verbunden sind.

Ich habe vier verschiedene Arrays. Die ersten beiden sollen auf die ausgewählte Komponente in der Box cb1 reagieren und die setzen beiden Arrays auf die zweite Box cb2 reagieren und nicht wenn ich eine komponente auswähle gleich alle Array allen Labels erscheinen.

monet123
 
das hast du wohl gar nicht 'falsch verstanden' 😉

überhaupt macht ja
if(cb1.getselectedIndex() == 0)
keinen Sinn, es soll doch wohl auch was passieren wenn was anderes als 0 ausgewählt wird?

also scheint Code a la
Code:
if (e.getSource() == combobox1) {
   // combobox 1 bearbeiten
}
die normale und richtige Wahl
 
Danke erstmal, ich werde mal eure Vorschläge gleich testen...Bis dann.

monet123
 
Ach ja, mir ist noch eine Frage eingefallen...

Macht es eigentlich Sinn oder ist es überhaupt möglich zwei itemListener Methode --> "public void itemSelectedChanged...."
in einem Programm unter zu bringen???? Ich würde mal auf nein tippen...aber wie so oft liege ich falsch...oder nicht.

monet123
 
Hi,

ich habe es mit den Vorschlägen versucht aber ich habe jetzt das Problem, dass gleichgültig welchen Eintrag ich aus der Box auswähle, ich immer nur ein und den gleichen String erhalte. Ich möchte es abe so haben, dass jeder Komponete einen anderen, für ihn bestimmten String erhält.

Wenn ich z.B. in der Box Einträge habe, wie "Hubraum", "Motorleistung" usw. muss ich doch unterschiedliche Daten erhalten können.

So langsam habe ich schon keine Lust mehr auf Java...oder sollte ich dranbleiben...was meint Ihr????

HIIIIIIIIIIIIIILLLLLLLLLLLLLLFFFFFFFFFFFFFFEEEEEEEEEEEEE!!!

Ich möchte doch nur zwei Boxen unterbringe, die nicht die Strings der anderen Box mit aufrufen....:-(

monet123
 
poste deinen Code?!
wenn wie oben nur
lb1.setText("Texte")
aufgerufen wird,
dann wird das natürlich für alle Ereignisse ausgeführt,

zuerst mal musst du dir überlegen WAS WANN passieren soll?

>muss ich doch unterschiedliche Daten erhalten können.

was für Daten? wofür? wohin? macht so für sich als Frage keinen Sinn
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben