Schnelle Textausgabe/Darstellung in Java

OP #5364465
Lesenswert?
• ▲
▼
Mein Programm erzeugt während des Laufes eine  ganze Menge (>1MByte) an 
Text, der zu Debugging-Zwecken dient. Ich möchte den Text während des 
Laufes sehen und auch am Ende des Laufes durch den Text durchscrollen.

Momentan benutze ich ein "TextArea" mit der "append(s)" Methode. Das ist 
aber ziemlich langsam. Hat einer ne schnellere Methode parat ?
#5364476
Lesenswert?
• ▲
▼
Moin!
Einfach in ein File schreiben geht nicht?
Und dann mit einem komfortablen Texteditor deiner Wahl oder einem der 
diversen Logfile-Analyse-Tools untersuchen. Da hat man doch ganz andere 
Möglichkeiten, mehrere Megabyte nach den interessierenden Stellen zu 
durchsuchen.
Während des Laufes kann man mit tail -f zusehen, was passiert.

Würde so machen:
Baku
Gast #5365476
Lesenswert?
• ▲
▼
Ich vermute jetzt einfach mal, dass du deinen "Lauf" im AWT laufen lässt 
und daher das UI blockierst.
Mach das ganze mal in einem SwingWorker, so in etwa:
1
    private class WichtigerLauf extends SwingWorker<String, String> {
2

3
        @Override
4
        protected void done() {
5
            try {
6
                String finalMessage = get();
7
                System.out.println("finalMessage = " + finalMessage);
8
            } catch (InterruptedException | ExecutionException ex) {
9
                ex.printStackTrace(System.err);
10
            }
11
        }
12

13
        @Override
14
        protected void process(List<String> chunks) {
15
            chunks.forEach(textArea::append);
16
        }
17

18
        @Override
19
        protected String doInBackground() throws Exception {
20
            
21
            // Hier läuft deine Datenabholerei
22
            
23
            while(datenKommenAn){
24
                publish(daten.getWichtigerTextDerAngezeigtWerdenMuss());
25
            }
26
            
27
            return "Alles erledigt!";
28
        }
29

30
    }

Starten dann mit
new WichtigerLauf().execute();

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.