Hi WWW-Gemeinde,
ich stehe vor folgendem Problem:
Ich will Statusinformationen unter Ausnutzung von Swing zur
Anzeige bringen.
Problem: Wie erreiche ich, dass die Informationen (normaler
ASCII-Output) sobald sie geliefert werden in den
Ausgabe-Container eingestellt werden (z.B. ein JTextFrame?),
die Anzeige weiterscrollt und alles was ueber die Kapazitaet der
Anzeige hinausgeht einfach verschwindet.
Unter Weiter-Scrollen meine ich jedoch nicht, dass Information,
die aus der Anzeige herausgescrollt wird, per Scrollbar einseh-
bar sein soll, sondern echt „herausfaellt“ (da der Inhalt sonst
ueber alle Grenzen wachsen wuerde)
Gibts da eine vorgefertigte Loesung oder muss man das
umstaendlich selbst programmieren?
Vielen Dank fuer Eure Tipps
Christian
Ergaenzung
Wie ich gerade gesehen habe, nutzt das Java Tutorial von
Sun tatsaechlich ein JTextArea zur Ausgabe von Log-Informationen.
Gibt’s da nicht ein Problem, wenn dessen Content (ist doch wohl
ein String) ueber die Groesse eines Strings hinaus waechst?
Im Tutorial wird einfach JTextArea.append(String s) verwendet, um
sukzessive Information anzuhaengen.
Das kann doch nicht auf Dauer gut gehen, oder?
Moin,
Gibts da eine vorgefertigte Loesung oder muss man das
umstaendlich selbst programmieren?
Wie ist das gemeint?
Ich würde mal nachsehen, wie der Swing-Textcontainer einen Reader lesen kann und ihn dann nicht in eine Scrollpane setzen. Fertich, oder?
Thorsten
Moin,
Gibt’s da nicht ein Problem, wenn dessen Content (ist doch
wohl ein String) ueber die Groesse eines Strings hinaus
waechst?
Ich glaube nicht, daß ein String eine begrenzte Größe hat.
Im Tutorial wird einfach JTextArea.append(String s) verwendet,
um sukzessive Information anzuhaengen.
Das kann doch nicht auf Dauer gut gehen, oder?
Nicht für immer. Verwalte die Zeilen selbst, immer wenn eine neue kommt, schmeißt Du die erste raus, leerst das Textarea und füllst es wieder.
Thorsten
Danke fuer die Ratschlaege - werde ich so machen
Christian
Gibts da eine vorgefertigte Loesung oder muss man das
umstaendlich selbst programmieren?
Wie ist das gemeint?
… wer lesen kann, ist manchmal einfach klar im Vorteil 
Stefan :-/
Swing: anzahlbegrenzte Anzeige von Textzeilen
Ich will Statusinformationen unter Ausnutzung von Swing zur
Anzeige bringen.
Problem: Wie erreiche ich, dass die Informationen (normaler
ASCII-Output) sobald sie geliefert werden in den
Ausgabe-Container eingestellt werden (z.B. ein JTextFrame?),
die Anzeige weiterscrollt und alles was ueber die Kapazitaet
der
Anzeige hinausgeht einfach verschwindet.
Natürlich kannst du auch ein JTextArea-Objekt benutzen, viel
einfacher ist aber folgende Lösung:
Du benutzt eine JList um die Textzeilen anzuzeigen. Wenn die
nicht veränderlich sein sollen, dann macht das keinen Unterschied.
Dann schreibst dir ein eigenes javax.swing.ListModel, das
ist nicht viel Aufwand. In diesem nimmst du dann die Textzeilen
vom Reader entgegen und speicherst sie in einer
java.util.LinkedList. Dann kannst du jedesmal,
wenn die Liste zu lang wird, den ersten Eintrag sehr effizient
entfernen und einen neuen am Ende hinzufügen. Nun meldest du noch
über das Listener-Interface an alle zuhörenden Objekte (also vor
allem an deine Liste, die sich beim Übergeben des Models dort
automatisch anmeldet), dass sich der Inhalt geändert hat - et voilà!!
Das dürfte eine ebenso einfache wie effiziente Möglichkeit sein,
dein Problem zu lösen…
Viel Spaß damit,
Stefan 
Moin,
Gibts da eine vorgefertigte Loesung oder muss man das
umstaendlich selbst programmieren?
Wie ist das gemeint?
… wer lesen kann, ist manchmal einfach klar im Vorteil 
Tut mir leid, daß ich Deinen hohen Ansprüche nicht Genüge tun konnte. Ich bitte vielmals um Verzeihung und verspreche auch, mich zu bessern.
Thorsten
Skandal!
Moin,
Tut mir leid, daß ich Deinen hohen Ansprüche nicht Genüge tun
konnte.
Das muß natürlich ‚Ansprüche n‘ heißen. Du liebe Güte, schreiben kann ich auch nicht!
Thorsten
Tut mir leid, daß ich Deinen hohen Ansprüche nicht Genüge tun
konnte.
Das muß natürlich ‚Ansprüche n‘ heißen. Du liebe Güte,
schreiben kann ich auch nicht!
nicht lesen, nicht schreiben kann er - aber wenigstens „posten“…
Na, das ist mir vielleicht einer *g*
Ist nicht böse gemeint. Nur war in dem Fall das Kernproblem nun
wirklich nicht unverständlich erklärt.
Schnelle Antworten haben im Forum einfach oft den Nachteil, dass
andere die Frage als beantwortet ansehen („Hat ja schon wer was
dazu geschrieben“) und sie vielleicht gar nicht erst lesen. Und
wenn die erste Antwort dann ein schnelles „Ich verstehe die Frage
nicht“ (zugegeben, habe ich auch schon hin und wieder gemacht)
ist, dann kann das manchmal einfach die richtigen/helfenden
Antworten verzögern, weil der Fragende seine Frage erst
wiederholen muss, damit sie wieder gelesen wird…
Also, ist nicht schlimm, wenn ein Experte mal eine Frage nicht
versteht. Dazu ist mensch ja nicht der/die einzige im Forum.
Vielleicht versteht’s ja wer anders. Und wenn nicht, dann kannst
du auch ein paar Stunden oder sogar einen Tag später nochmal
nachfragen…
Und wenn eine Frage wirklich offensichtlich unzureichende
Informationen enthält (à-là „Hallo, bei mir läuft Netscape nicht.
Wer kann mir helfen?“), dann ist Nachfragen eben nötig (manchmal
nebst RTFM, aber egal…)
In dem Fall fand ich persönlich deine Nachfrage aber schon
ausreichend in der Frage beantwortet (die übrigens sehr
ausführlich und gut gestellt war, ist nicht immer so).
Also,
nix für ungut, hast ja hier doch schon einigen weitergeholfen…
Gruß,
Stefan 
Hi Stefan,
vielen Dank fuer Deine interessante Antwort
und die „Verteidigung meiner Ehre“ 
Gruss
Christian
Moin,
Ist nicht böse gemeint. Nur war in dem Fall das Kernproblem
nun wirklich nicht unverständlich erklärt.
Stimmt, gesucht ist ein Swing-tail. Dazu habe ich auch etwas geschrieben, sogar an zwei Stellen.
Schnelle Antworten haben im Forum einfach oft den Nachteil,
dass andere die Frage als beantwortet ansehen („Hat ja schon
wer was dazu geschrieben“) und sie vielleicht gar nicht erst
lesen.
Was soll ich daran ändern?
Also, ist nicht schlimm, wenn ein Experte mal eine Frage nicht
versteht. Dazu ist mensch ja nicht der/die einzige im Forum.
Vielleicht versteht’s ja wer anders. Und wenn nicht, dann
kannst du auch ein paar Stunden oder sogar einen Tag später
nochmal nachfragen…
Dazu zweierlei: Der Aufwand, meine Antworten zeitlich zu planen, ist mir für die meisten Sachen zu groß. Dann gebe ich lieber einen Denkansatz, vieleicht recht’s ja. Wenn nicht, kann nachgefragt werden.
Zweitens passiert es zu häufig, daß ausführliche Antworten keine Reaktion auslösen. Ehe ich also einen Roman ins Leere schreibe, versuche ich es mit einer Kurzgeschichte.
In dem Fall fand ich persönlich deine Nachfrage aber
schon ausreichend in der Frage beantwortet (die übrigens sehr
ausführlich und gut gestellt war, ist nicht immer so).
OK. Ich nicht, also muß ich wohl nachfragen.
Thorsten