JComboBox macht Probleme

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

Guest

Gast
Hallo zusammen,

ich wollte gerne wissen warum mir meine JComboBox probleme bereitet.

Ich habe im Programm eine JComboBox in der einer StringArray liegt, also halt mehere Strings. Ich habe
diese Box-Instanz mit einem ItemListener versehen

Code:
cb.addItemListener(new Test_5()
								{
					public void itemStateChanged(ItemEvent t)
								{
						JComboBox waehlen = (JComboBox)t.getSource();
								 if(waehlen.getSelectedItem().equals("2H7"))//
									{
									for(String p:daten2)//daten2 ist ein StringArray
										{
										ta.append(p);//Sollte nicht besser setText("p")
                  //stehen aber wenn ich das einsetze, dann bekomme 
                 //ich immer nur den letzten Wert des StringArray´s
                                      });

cb.addItemListener(new Test_5()
				{
					public void itemStateChanged(ItemEvent ie)
					{	
						JComboBox gewaehlt = (JComboBox)ie.getSource();
						
						if(gewaehlt.getSelectedItem().equals("1H7"))
						{
							for(String i:daten3)//daten3 ist ein StringArray
							{
								ta.append(i);//ta ist eine JTextArea
							}
						}
					}
				});
Mein Problem ist nun, wenn ich den Wert "2H7" aufrufe erscheint der Text aus "daten2" problemlos, wenn ich aber
in der gleichen Box dann "1H7" wähle löscht er nicht den vorherigen Wert aus der TextArea, sondern "addiert" den
neuen String dem Text in der TextArea zu.
ich denke es liegt an "append()". Aber wenn ich es mit setText("i"), dann bekomme ich immer nur den letzen Wert des
ganzen StringArray´s.

Ich kann mir das Ausmaß an Problemen vorstellen, wenn ich es mal mit 2 oder 3 JComboBoxen versuche...oder ich versuch´s lieber nicht.

Ich wäre für jede Hilfe dankbar,

Gruß monet
 
das ganze hat nix mit JComboBoxen zu tun,

genausogut könntest du mehrmals bestimmte Operation in der main aufrufen,
bitte auf solche Gedankengänge achten,

----------
auf JTextArea könntest du auch verzichten,
die ist hier auch nicht schlauer als ein einfacher String mit + oder neu setzen

---------
---------
---------

so, du möchtest also an einem String "a" erst "x" anfügen,
später "y" anfügen, dabei soll aber nicht "axy" entstehen und auch nicht "y", sondern "ay",
Problem vollständig beschrieben?

gut, dass du gleich an mehrere Kombinationen denkst

es gibt im Grunde zwei Strategien:
1.)
den String "ax" analysieren, du weißt evtl. dass nur der letzte Buchstabe falsch ist, den kannst du schnell entfernen und das y einfügen,
oder du weißt, dass der letzte Buchstabe x, y oder z ist und kommst damit weiter
oder Zeilenumbruch
oder ähnliches

2.)
parallel zum String einen Baukasten speichern, ein höheres Konstrukt mit der Information:
der aktuelle String besteht aus den Teilen a und x,

nun ist es einfach, an einer genau definierten Position y einzufügen (wo vorher x stand) und den String "ay" komplett neu aufzubauen,

in einfachster Form bedeutet das, einfach nur den Teil "a" irgendwo zu merken,
bei den von dir angesprochenden '2 oder 3 JComboBoxen' mit entsprechend vielen Kombinationsmöglichkeiten muss es schon etwas mehr sein,
ein String[] mit festgelegten Positionen oder wie gesagt ein höheres Objekt einer eigenen Klasse
 
Hi, danke erstmal und mit dem Gedankengang, da ist schon was wahres dran...

SlaterB hat gesagt.:
so, du möchtest also an einem String "a" erst "x" anfügen,
später "y" anfügen, dabei soll aber nicht "axy" entstehen und auch nicht "y", sondern "ay",
Problem vollständig beschrieben?
aber wie das so mit den Gedankengängen so ist man kann manche nur schwer nachvollziehen.

Ich glaube ich habe mich anderes ausgedrückt, wie es vielleicht rüberkam ode ich verstehe dich jetzt falsch ???:L

Ich möchte nicht einem String "a" eine String "x" anfügen. Genau das möchte ich ja vermeiden.
Ich möchte String "a" erscheinen lassen und String "a" soll dann von einem neuen String "x" ersetzt werden.

Ich formuliere es mal so:
Wähle 'x' aus ComboBox 1, und zeige einen String 'y', der durch Auswahl 'x' in
TextArea 1 angezeigt wird.
Wähle 'a', ein anderer Wert aus gleicher ComboBox 1 und zeige einen String 'm', der durch Auswahl 'a' in
TextArea 1 gezeigt werden soll und dabei soll nicht in der TextArea 1 'ym' erscheinen sondern nur 'm' usw.

So habe ich mir das vorgestellt.

Gruß

monet[/u]
 
hmm gut, dann habe ich da zuviel hineininterpretiert 😉

Lösungen:
a.)
am Anfang der Operation oder vor der Schleife
ta.setText("");

dann funktioniert das append() danach korrekt

b.)
ähnlich:
TextArea mal in Ruhe lassen, einen separaten String/ StringBuilder erstellen und in der Schleife zusammenbauen,
am Ende mit dem FERTIGEN Strring
ta.setText(fertigerString);
 
SlaterB hat gesagt.:
Lösungen:
a.)
am Anfang der Operation oder vor der Schleife
ta.setText("");

dann funktioniert das append() danach korrekt

b.)
ähnlich:
TextArea mal in Ruhe lassen, einen separaten String/ StringBuilder erstellen und in der Schleife zusammenbauen,
am Ende mit dem FERTIGEN Strring
ta.setText(fertigerString);

Ich brech zusammen.... :autsch:

Lösung a hat absolut klasse funktioniert :applaus:

Mein Vorheriger Code:
Code:
cb.addItemListener(new Test_5()
            {
               public void itemStateChanged(ItemEvent ie)
               {   
                  JComboBox gewaehlt = (JComboBox)ie.getSource();
                  
                  if(gewaehlt.getSelectedItem().equals("1H7"))
                  {
                     for(String i:daten3)//daten3 ist ein StringArray
                     {
                        ta.append(i);//ta ist eine JTextArea
                     }
                  }
               }
            });

und nun mein Jetziger
Code:
cb.addItemListener(new Test_5()
            {
               public void itemStateChanged(ItemEvent ie)
               {   
                  JComboBox gewaehlt = (JComboBox)ie.getSource();
                  
                  if(gewaehlt.getSelectedItem().equals("1H7"))
                  {
ta.setText(""); //und alles klappt so wie ich es mir vorgestellt habe :applaus: 
                     for(String i:daten3)//daten3 ist ein StringArray
                     {
                        ta.append(i);//ta ist eine JTextArea
                     }
                  }
               }
            });
[/code]
 
Hab noch was vergessen...

mit Beispiel b aus deinem Hinweis komme ich noch nicht ganz klar, aber ich hoffe das wird...

Ist das auch mit mehreren ComboBoxen möglich, wie ich es gemacht habe????

Aber nochmal danke SlaterB 😀

Gruß
monet
 
ja was hast du denn gemacht?
den Inhalt einer TextArea gelöscht und etwas neu eingefügt,
dass geht überall, ja

wenn du nun schon wieder mehrere ComboBoxen erwähst,
dann denke ich gleich wieder, dass du die Texte mehrerer Boxen zusammen anzeigen willst und nähere mich meinem ersten Posting,
ich sage also nicht mehr als 'ja', bist du genaue Fragen stellst.. :bae:
 
Im Grunde hast Du ja recht aber wie lange mich das schon gewurmt hat.... ???:L

Statt ComboBoxen hatte ich mir dann so etwas mir RadioButtons vorgestellt, dass man mehrere R.Buttons anwählt und
dann das Ergebnis in auf einer "Fläche" zusehen bekommt.
So etwas wie
RadioButton a,b,c,d,e,f
Ich wähle a, c und e:

Dann liefere Text in TextArea 1 auf der Grundlage von a,c und e, die mit StringArray´s verbunden sind.

Später, irgndwann mal, wenn ich groß bin möchte ich dann solche Daten aus einer Datenbank importieren können um
nicht die Daten in verschieden Klassen speichern zu müssen, aber das kommt viel, viel, viel später.

Was das erste Posting angeht, dass war ja echt schwer zu verstehen. Ich muß dazu sagen, dass ich erst seit 2-3 Monaten
mich mit Java auseinandersetze. Ich habe auch keinerlei Erfahrung in einer anderen Programmiersprache.

Gruß monet
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben