Forum: PC-Programmierung Schnelle Textausgabe/Darstellung in Java


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martin O. (ossi-2)


Bewertung
0 lesenswert
nicht 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 ?

von Baku M. (baku)


Bewertung
0 lesenswert
nicht 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

: Bearbeitet durch User
von foo (Gast)


Bewertung
0 lesenswert
nicht 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:
    private class WichtigerLauf extends SwingWorker<String, String> {

        @Override
        protected void done() {
            try {
                String finalMessage = get();
                System.out.println("finalMessage = " + finalMessage);
            } catch (InterruptedException | ExecutionException ex) {
                ex.printStackTrace(System.err);
            }
        }

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

        @Override
        protected String doInBackground() throws Exception {
            
            // Hier läuft deine Datenabholerei
            
            while(datenKommenAn){
                publish(daten.getWichtigerTextDerAngezeigtWerdenMuss());
            }
            
            return "Alles erledigt!";
        }

    }

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.