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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren