Alternative zu JTextArea?

Status
Nicht offen für weitere Antworten.

hdi

Top Contributor
Hey,

ich bräuchte etwas, das sich genauso gut in ein ScrollPane implementieren lässt wie eine JTextArea, nur bietet diese
mir, soweit ich das jetzt nachgeprüft habe, ein paar Funktionalitäten nicht, die ich gerne hätte.

Die wären:

Ich würde gerne Text-Zeilen in unterschiedlicher Farbe anzeigen lassen können (ich kann nur mit setForeground die Farbe umstellen, aber das gilt immer für den kompletten Inhalt der TextArea)

Ausserdem würd ich irgendwie gerne ein ToolTip für jede Text-Zeile haben, und zwar so dass wenn eine Zeile länger
ist als das Fenster, bzw. das ScrollPane und die TextArea, dass dann ein ToolTip Text eingeblendet wird (ohne Delay!) der die Zeile komplett zeigt.

Geht sowas?

In der API gibt es als Alternativen nur EditorArea oder sowas, sah nicht so aus als könnten die das alles.. Vorallem
kontte man da irgendwie gar nicht so leicht Text einfügen per append(String) oder insert(String).

Wie könnte ich so eine Funktionalität am besten realisieren, welche Klasse gäb es da am besten ausser JTextArea?
Ich hab mir schon überlegt ob ich es einfach in ein JPanel malen soll, also Strings malen..
Aber das ganze müsste wie gesagt auch scrollbar sein, also wär es gut wenn ich es in ein ScrollPane hauen kann,
generell vermute ich mal ist das Zeichen von Strings, wenn es um sowas wie eine Liste von Text-Zeilen geht (das ist es nämlich bei mir) sehr dilletantisch und nicht gut programmiert.

Danke im Vorraus
 
Also, farbigen text kannst du verwenden, dazu musst du die html-tags benutzen (swing-components unterstützen einige wenige tags) Dazu gibts in dem forum schon genug, wirst schon was finden, ansonsten einfach ausprobieren.

Was die zeilenweise-tooltips angeht, da bin ich eher skeptisch. In JEditorPane (oder nahe verwandte) kann man aber auch irgendwelche weitere komponente reinpacken, an die könnte man die tooltips dranhängen.

Oder vielleicht eine tabelle, in die neue meldungen zeilenweise reinkommen, oder sowas in der art?
 
Ja also es geht noch immer um meine Log-Konsole, du weisst ja Bescheid 😉

Hat ja jetzt alles geklappt. Nur möchte ich zB fehlermeldungen farblich von normalen meldungen abheben, deshalb das mit den colors, ich werd mir das mit html tags mal ansehen.

und die tooltips eig. nur deshalb, weil ich mein fenster nicht so ewig breit machen will. manche log nachrichten sind halt
recht lang und laufzeit abhängig, so nach dem motto: "würfele 6 und 3, gegner würfelt 3 und 5, hab 3 einheiten, gegner hat 9". also ich mach jetz kein risiko, aber generell ich mache ein spiel (kA was, will erstmal gute debugging-basis haben).

und dann wäre die konsole halt von der breite her den halben bildschirm. das sieht nicht nur kacke aus, sondern nimmt einfach platz weg und überschneidet sich am ende mit dem eigentlichen spiel, wo alles abläuft.

tjaja.. bin mir nich so schlüssig wie ich das ordentlich machen kann. ich möchte halt das fenster immer möglichst klein haben, und aber möglichst viel info anbieten können darin. tooltips wären halt so eine platzsparende variante, wenn mal ein logeintrag zu lang ist.

alternativ hatte ich mir überlegt, die ganzen zusatzinfos von der eigentlichen nachricht zu trennen.

bisher sehen die log einträge so aus (bsp)
11:20:19 Controller:doSomething(line 18) > Hallo, dies ist meine Nachricht.
und jetzt dachte ich, ich zeig nur noch an:

+ Hallo, dies ist meine Nachricht.

wobei das "+" halt zB ein kleiner button neben jeder nachricht ist, und wenn man draufklickt, klappt die weitere
genauere Info aus..

ich hab dir ein bild davon gemalt (ich will damit nicht sagen, dass du dumm bist, sondern dass wahrscheinlich ich dumm bin und es nicht richtig erklären kann):


Hatte ich schon versucht, aber das ist alles nicht so einfach mit JTextArea. Man kann zwar per insert() eine Zeile irgendwo einfügen, d.h. zB beim Klick auf eine Nachricht, darunter die weiteren Infos einblenden..

Aber die Prozedur, den richtigen Platz zu finden ist unglaublich sch*** zu machen, weil insert() als parameter einen int x verlangt, und das ist der x-te CHAR in der kompletten TextArea. Und jetz darf ich anfangen, alle Chars abzuzählen etc etc.

Irgendwie bietet diese Klasse halt echt kaum was ausser zeilenweises einfügen. Aber darauf arbeiten dann, d.h. etwas verändern im nachhinein etc ist fast nicht möglich oder SEHR umständlich und langsam.

deshalb such ich jetz nach einer besseren lösung, aber solange man keine besseren klassen kennt, hat man da ein problem 😛 Ich meine die API durchforsten ist die eine Sache, zu wissen, wonach man eigentlich suchen muss, ist ne ganz andre Problematik als Anfänger. Vorallem in Java, wo man als API quasi ein 24.000-seitiges Buch hat.[/img]
 
Deine Beschreibung hört sich extrem nach JTree an. Der ist scrollbar und das erwähnte "Ausklappen" kann der auch.

Bei den Java Tuts ist auch ein Beispiel dabei, wo sie wilde Sachen mit JList machen (Bildchen einfügen, Hintergrundfarbe für jede Zeile ändern), eventuell geht das ebenfalls.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben