Forum: PC-Programmierung Implementierung eines schnellen Log-Betrachters (Java)


von Riesenharf (Gast)


Lesenswert?

Ich benötige eine graphische Benutzeroberflächen-Klasse, welche größere 
Logdateien (ca. 20 MByte Text) farbig anzeigt.
JEditorPane ist damit schnell überfordert.

Ich würde die Logdatei zeilenweise zusammen mit einem Attribut 
(Enumerationstyp) in einem generischen Vector speichern.

Von hier gibt es zwei Wege - entweder
 1.) anhand der Position der Scrollbalken den aktiven Ausschnitt 
erkennen und zeichnen oder
 2.) alles auf ein riesiges Image zeichnen und von diesem dann den 
Ausschnitt "blitten".

Was wäre der günstigste Weg? Oder kennt jemand schon eine gute freie 
Klasse für diesen Zweck?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Riesenharf schrieb:
> JEditorPane ist damit schnell überfordert

Was benutzt du den? HTML/RTF? Incrementelle Updates oder alles in einem 
Rutsch... eigenes Dokumentenmodell?

Hier gibt es einige Tips zur Optimierung:
http://java-sl.com/JEditorPanePerformance.html

Bei Logeinträgen würde es sich ggf. auch anbieten eine Jlist mit je 
einem EIntrag/Logentry + Custom Renderer zu nutzen.

von Jasch (Gast)


Lesenswert?

Riesenharf schrieb:
> Ich benötige eine graphische Benutzeroberflächen-Klasse, welche größere
> Logdateien (ca. 20 MByte Text) farbig anzeigt.
> JEditorPane ist damit schnell überfordert.
>
> Ich würde die Logdatei zeilenweise zusammen mit einem Attribut
> (Enumerationstyp) in einem generischen Vector speichern.

Hmm, hmm, verbraucht ganz schön viel Speicher für Kram den Du garnicht 
anzeigst. Besser nur den gerade angezeigten Bereich und ein bisschen 
drumherum speichern.

> Von hier gibt es zwei Wege - entweder
>  1.) anhand der Position der Scrollbalken den aktiven Ausschnitt
> erkennen und zeichnen oder

Ja.

>  2.) alles auf ein riesiges Image zeichnen und von diesem dann den
> Ausschnitt "blitten".

Nein, um Gottes Willen!

Du hast ja selber schon "riesiges Image" gesagt, hast Du mal 
ausgerechnet wie gross das wirklich werden kann? Ich denke das dürfte 
jenseits von Gut und Böse(tm) sein.

> Was wäre der günstigste Weg? Oder kennt jemand schon eine gute freie
> Klasse für diesen Zweck?

Keine Ahnung, ich nehme da so Sachen wie Baretail und gut ist.

von Riesenharf (Gast)


Lesenswert?

Ich benutze text/rtf. Die Empfehlungen auf der angegebenen Seite
http://java-sl.com/JEditorPanePerformance.html
habe ich schon durchgearbeitet.
Speziell geholfen hat
http://javatechniques.com/blog/faster-jtextpane-text-insertion-part-i/
und
http://javatechniques.com/blog/faster-jtextpane-text-insertion-part-ii/

Allein die Verwendung eines separaten Document-Objekts reduzierte die 
benötigte Zeit um eine Größenordnung.

Ein separates Programm kommt leider nicht in Frage, da mein Programm die 
Logdateien von Geräten per scp herunterlädt und nebenbei auch 
Temperatur- und Spannungswerte graphisch darstellt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.