JTextArea befüllen

Lautsprecher

Erfahrenes Mitglied
Hallo,
ich stehe mal wieder auf dem Schlauch, vielleicht kann mir jemand von Euch weiterhelfen.

Ich habe 5 buttons in meiner Applikation die unterschiedlich beschriftet sind.
Wenn der Anwender auf einen Button klickt, soll der Text ausgelesen werden und in eine andere Komponente eingelesen werden. Dafür favorisiere ich momentan immer noch die JTextArea.
Stelle mir das ganze ähnlich wie beim VB vor: mit Listbox.addText("Hier soll der Text vom Button drin stehen"), etc.

Frage? funktioniert das auch bei Java? wenn ich JTextArea.add("Einen String übergebe") mache, bekomme ich immer die Fehlermeldung, dass dies nicht funktioniert.

Wenn ich JTextArea.setText("Hier steht ein Text drin"); mache, wird dieser Text beim nächsten Aufruf wieder gelöscht.
Er sollte aber stehen bleiben und den Neuen Text unten anhängen.

Wenn dies klappt und der Anwender die JTextArea befüllt hat, soll er ganz gezielt per Mausklick eine Zeile anklicken können und dieser Text soll dann wieder ausgelesen werden.......
 
Hallo,

JTextArea hat noch die Methode
Code:
append(String s)
, mit dieser kann man Text der Area hinzufügen.

MFG

zEriX
 
Wenn ich JTextArea.setText("Hier steht ein Text drin"); mache, wird dieser Text beim nächsten Aufruf wieder gelöscht.
Er sollte aber stehen bleiben und den Neuen Text unten anhängen.

Dafür gibts auch die Methode append(String str);
@Lautsprecher: Für solche einfache Sachen gibts auch die API Documentation
http://java.sun.com/javase/6/docs/api/
Da würde man auch zum Beispiel gleich sehen, warum JTextArea.add("ein String") nicht funktionieren kann...


*grüssle*
MeinerEiner

Edit: Noch garnet 10 Uhr, und Zerix ist trotzdem mal wieder schneller :)
 
Zuletzt bearbeitet von einem Moderator:
Hallo Danke Euch,
das hat wunderbar geklappt. Jetzt spiele ich gerade mit der JList.......
hier habe ich das gleiche Problem, dass er nur eine Zeile einliest und diese dann wieder überschreibt....

Code:
ftext = (e.getActionCommand());  /* übergebe den Namen des Buttons in String Variable */
  Vector fehlercode =  listebefuellen();


........

fehlercode.add(ftext);

....

    jListFC.setListData(fehlercode);

Grüße
 
Hallo,....

Code:
 button.addActionListener(new java.awt.event.ActionListener() 
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
if(e.getActionCommand().equals(e.getActionCommand()));
{	
ftext = (e.getActionCommand());
	Vector fehlercode =  listebefuellen();
	 jListFC.setListData(fehlercode);
	}
	}
	  });	
}




protected Vector listebefuellen() 	   {
		  
	   Vector fehlercode = new Vector();
	     fehlercode.add(ftext);
			}
	   return fehlercode;
	   }


Wieteres Problem:
Der Anwender soll auf einen Button drücken und der Text des Buttons, soll dann in der JList ausgegeben werden.
-> JList soll dynamisch befüllt werden
(man weiß nie wie viele Buttons der Anwender drückt, sprich wieviel Einträge dadurch in der Listbox erscheinen)
 
Mit der Methode setListData setzt du alle Daten die in der Liste stehen komplett neu, das heißt, dass alle Daten gelöscht werden die vorher drin standen. Du solltest einfach den Vector nicht immer wieder neu erstellen, sondern einfach die String "hinten dran hängen".

MFG

zEriX

@Meiner_Einer
Hattest recht ;-)
 
Naja in deiner Methode erstellst du einen neuen leeren Vector und fügst diesem deinen Fehlertext hinzu.. Und dann machst du ein setListData mit eben diesem Vector.
Sollte doch klar sein, das dann in der Liste nur ein Eintrag vorhanden ist.

Wenn du sowieso nur eine Zeile hinzufügen willst, mach das doch so:
Code:
(DefaultListModel)model = (DefaultListModel)list.getModel();
model.addElement("der fehlertext");
evt. noch ein fireIntervallAdded() aufrufen, aber ich glaube eher nicht

*grüssle*
MeinerEiner
 
?

mh also irgendwie komme ich immer noch nicht weiter!

habe jetzt mal importiert und deklariert:

import javax.swing.ListModel;
private ListModel defaultListModel = null;

aber irgendwie kommt es mir vor, als wenn die Befehle nicht erkannt werden.

bei deinem Ausdruck
(DefaultListModel)model = (DefaultListModel)list.getModel();
model.addElement("der fehlertext");

motzt er am DefaultListModel? Fehlt da denn noch ein import?

außerdem - was bedeutet getModel() worauf bezieht er sich da?!
 
Ja, der Import des DefaulListModels fehlt.

Code:
import javax.swing.ListModel;
private ListModel defaultListModel = null;
Warum machst du das eigentlich? DefaultListModel ist eine Klasse und du legst hier ein Variable an, das so heißt. Das kann so nicht funktionieren. Man kann auch nicht nach Variablen casten, zumindest denke ich, dass du das vor hattest, wenn ich mir das so anschaue.

MFG

zEriX
 
Zurück