Ausgabe auf JEditorPane

Status
Nicht offen für weitere Antworten.

XFlipX

Aktives Mitglied
Hallo,

ich bin soweit, dass ich einen externen Player starten und dessen Stausmeldungen mir in der Konsole anzeigen lassen kann. Jetzt möchte ich aber die Statusmeldungen auf meine JEditorPane ausgeben. Was die Statusmeldungen angeht, die liegen alle in einem BufferedReader. Den ich normalerweise Zeile für Zeile auslese und auf der Konsole ausgebe.

Mit der Methode setText würde ich ja immer wieder komplett den Text der EditorPane neu setzen, sodass ich immer nur die letzte Zeile sehen würde.

Gibt es hier andere Möglichkeiten ?

Danke, XFlipX
 

javimka

Top Contributor
Wenn du eine JTextArea verwenden würdest, könntest du mit apped(String) am Ende des Textes weiteren Text anfügen. Vielleicht ist das ja eine Alternative zur JEditorPane.
 

eRaaaa

Top Contributor
oder halt einfach
editor.setText(editor.getText()+neuerText);

oder den text in einem stringbuffer/builder halten. (da gibt es auch das append()),
und dann kannst du einfach editor.setText(buffer.toString()); o.ä. setzen
 

0xdeadbeef

Top Contributor
Die Swing-Komponenten sind eigentlich alle zu langsam, um sie venünftig als Konsole einzusetzen.
Am ehesten geht es noch mit einer JTextArea in dieser Art:

Java:
	private JTextArea console = null;
	
	...
	
	console = new JTextArea();
	console.setEditable(false);
	Font f = new Font("Monospaced", Font.PLAIN, 12 );
	console.setFont(f);

	...

	/**
	 * Print string to console window
	 * @param s String to print
	 */
	public void print(final String s) {
		Document doc = console.getDocument();
		int length = doc.getLength();
		try {
			doc.insertString(length, s, null);
		} catch (BadLocationException ex) {}
	}
	
	/**
	 * Force console to display last line
	 */
	public void flush() {
		SwingUtilities.invokeLater(new Runnable() { public void run() { console.setCaretPosition(console.getDocument().getLength()); } });
	}

	/**
	 * Print text to output pane
	 * @param s text to print
	 */
	public void printOut(final String s) {
			SwingUtilities.invokeLater(new Runnable() { public void run() { print(s); } });
	}

Ein JEditorPane, das man für farbigen Text bräuchte, ist dramatisch viel langsamer. So oder so hat man früher oder später das Problem, daß irgendwann das Einfügen neuen Texts so lange dauert, daß neue Ausgabeanweisungen nicht mehr ausgegeben werden und schlimmstenfalls die gesamte Swing-Eventqueue hängenbleibt.
Es gibt diverse Notlösungen wie das zyklische Löschen des gesamten Inhalts oder das Löschen einer Zeile am Anfang für das Einfügen einer Zeile am Ende, sobald eine bestimmte Maximalanzahl an Zeilen überschritten wurde. Aber eine richtig saubere Lösung gibt es nicht.
Aus welchem Grund auch immer stellt Swing keine Dokumentenklasse usw. zur Verfügung, die man für eine vernünftige Konsolenimplementierung bräuchte und die paar wenigen Ansätze in dieser Richtung sind lediglich minimal optimierte Versionen von JEditorPane, die nicht wirklich viel bringen und ebenfalls viel langsamer sind als eine JTextArea.
Ich habe schon mehrfach angesetzt, mir selber sowas zu schreiben, aber letztendlich habe ich mich auch immer mit einem Provisorium wie dem obigen abgefunden.
 
P

pmias

Gast
Hi,

über das beinhaltende Document des JEditorPane kann man Texte anhängen - aber auch an beliebiger Stelle einfügen. Vielleicht hilft das hier ja:

(JEditorPane ist initialisiert und Attribut der Klasse, welche die Methode append() bietet)

Java:
public void append(String text)
      {
      Document doc = pane.getDocument();
      
      try
         {
         doc.insertString(doc.getLength(), text, null);
         }
      catch (BadLocationException e)
         {
         e.printStackTrace();
         }
      }

Das erste Attribut von insertString() gibt die Stelle an, wo eingefügt werden soll (durch doc.getLength() am Schluß). Über das letzte Attribut können Formatierungsattribute gesetzt werden.
 

0xdeadbeef

Top Contributor
Wie gesagt: JEditorPane ist als Konsole weitestgehend unbrauchbar, weil dies Komponente von der Geschwindigkeit her maximal mit der Eingabegeschwindigkeit eines Menschen klarkommt. Wenn man nur alle paar Sekunden eine Zeile ausgeben muß, geht das eine Weile gut. Wenn es auch mal ein paar hundert Zeilen in ein paar Sekunden sein sollen, endet das im totalen Stillstand.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
kodela Gemittelte Ausgabe von Buchstaben Allgemeine Java-Themen 11
L Event Handling Ausgabe von Radioboxen und befüllen von Comboboxen Allgemeine Java-Themen 1
curranux Ausgabe als Textdatei schreiben. Allgemeine Java-Themen 2
Master3000 Komisches Zeichen als Ausgabe in der Konsole Allgemeine Java-Themen 20
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
R In der Ausgabe sollte anstelle des obersten Sterns ein "+" stehen nur scheitere ich bei der Implementierung Allgemeine Java-Themen 9
L Ausgabe von in Echtzeit ausgeführten Code Allgemeine Java-Themen 9
B System.out Ausgabe auf jtextarea Fehlersuche Allgemeine Java-Themen 8
J Ausgabe von Links nach Rechts ausgeben? Allgemeine Java-Themen 2
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
B Game of life Ein und Ausgabe Configurations Datei Allgemeine Java-Themen 17
Exdroid BlueJ Wie bekomme ich die Ausgabe in eine TXT Datei? Allgemeine Java-Themen 2
M Input/Output CMD Ausgabe als ButtonEvent Allgemeine Java-Themen 5
Tausendsassa Input/Output Problem mit der gleichzeitigen Ausgabe zweier Threads Allgemeine Java-Themen 8
S 2-spaltige Ausgabe als Tabelle ausgeben Allgemeine Java-Themen 12
C Hilfe bei einer Point Ausgabe Allgemeine Java-Themen 7
B JFrame Text Ausgabe Allgemeine Java-Themen 7
D Variablen Ausgabe bzw. einlese Fehler Allgemeine Java-Themen 7
M Eclipse Keine Ausgabe mehr bei Fehlern Allgemeine Java-Themen 3
O log4j, Problem bei Ausgabe null-Wert Allgemeine Java-Themen 0
J Ausgabe nach Excel Allgemeine Java-Themen 1
balwan Unverständlichkeit einer Ausgabe Allgemeine Java-Themen 4
K Input/Output Ausgabe in Textdatei Allgemeine Java-Themen 7
B Barcode4j Ausgabe Formatieren Allgemeine Java-Themen 3
S Speichern/Laden/Hinzufügen/Löschen der Array-Wörter; unerwartete Ausgabe Allgemeine Java-Themen 6
H Scanner: Ausgabe erst nach Abbruch Allgemeine Java-Themen 8
K Methoden Ausgabe erfolgt nicht Allgemeine Java-Themen 6
T Ausgabe falsch! Allgemeine Java-Themen 5
W Input/Output Ausgabe eines Statements Allgemeine Java-Themen 5
P Falsche Ausgabe Allgemeine Java-Themen 5
nutellastulle Zugriff, Übergabe, Bearbeitung und Ausgabe von Jlist Allgemeine Java-Themen 6
D Ausgabe von C# Konsolenanwendung lesen Allgemeine Java-Themen 5
O Input/Output CMD-Ausgabe abfangen und in Datei speichern Allgemeine Java-Themen 8
P Pdf ausgabe Allgemeine Java-Themen 3
schlingel Process - Ausgabe leer Allgemeine Java-Themen 5
C Ausgabe unklar Allgemeine Java-Themen 2
J Applet Ausgabe beim Speichern ausblenden Allgemeine Java-Themen 4
Rudolf Java Ausgabe einer Texttabelle im Prompt Allgemeine Java-Themen 4
P Ausgabe der berechneten Fakultaet Allgemeine Java-Themen 12
M Ausgabe in Datei zum Ausdruck Allgemeine Java-Themen 2
E formartierte Ausgabe zur Laufzeit Allgemeine Java-Themen 2
D Bildschirm Flackert bei Ausgabe Allgemeine Java-Themen 4
K Windows Fehlerkanal -> Ausgabe in Datei Allgemeine Java-Themen 6
H Ausgabe von zwei Textfeldern Allgemeine Java-Themen 3
R log4j - Ausgabe der Logs Allgemeine Java-Themen 3
L in zufälligen Sekunden Ausgabe machen Allgemeine Java-Themen 2
W Ausgabe beschleunigen? Allgemeine Java-Themen 3
O Backslashes werden in der Ausgabe nicht übernommen Allgemeine Java-Themen 5
B Ausgabe auf der Konsole bei Nebenläufigkeit, Threads und Synchronisation Allgemeine Java-Themen 8
A Ausgabe in OpenOffice Calc oder pdf Allgemeine Java-Themen 3
T Ausgabe in txt.Datei speichern Allgemeine Java-Themen 23
S Boolean Ausgabe JasperReports Allgemeine Java-Themen 2
M Consolen Ausgabe Allgemeine Java-Themen 3
G Ausgabe mit tag Allgemeine Java-Themen 3
W Ausgabe von Fließkommazahlen formatieren Allgemeine Java-Themen 2
D Ausgabe HTML-Seite Allgemeine Java-Themen 5
H Externe Prozesse und Inputstreams - ausgabe in JTextArea Allgemeine Java-Themen 3
G Ausgabe in eine txt Datei schreiben? Allgemeine Java-Themen 7
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
J Ausgabe der Quelltext Zeilennummer? Allgemeine Java-Themen 12
B serlvet system.out ausgabe Allgemeine Java-Themen 4
B Ausgabe auf stdout "löschen" und dafür neue Ausgab Allgemeine Java-Themen 10
X e.printStackTrace Ausgabe in Datei umleiten? Allgemeine Java-Themen 14
B Ausgabe mit print wird verzögert Allgemeine Java-Themen 9
D Dateien und ordner ausgabe Allgemeine Java-Themen 5
M Rekursive Ausgabe einer linkedList Allgemeine Java-Themen 8
M Ausgabe in Console formatieren`? Allgemeine Java-Themen 12
D Seltsame Ausgabe beim zusammenführen zweier Dateien Allgemeine Java-Themen 14
I Composite Pattern für Ausgabe von Ausdruck Allgemeine Java-Themen 3
H falsche ausgabe Allgemeine Java-Themen 15
S Datei Ausgabe Allgemeine Java-Themen 4
T Fehlersuche bzw. woher kommt diese ausgabe? Allgemeine Java-Themen 2
D Formatierte Ausgabe vom ProcessBuilder Allgemeine Java-Themen 4
S Endlos-Schleife bei Ausgabe von ArrayList Allgemeine Java-Themen 6
L Ausgabe auf GUI verzögert Allgemeine Java-Themen 2
D Die Ausgabe von Tidy in eine Datei umleiten Allgemeine Java-Themen 3
R Vorzeichen bei der Ausgabe Allgemeine Java-Themen 7
G Problem mit Ausgabe-Kanälen Allgemeine Java-Themen 2
T Ausgabe bei Struktogrammen Allgemeine Java-Themen 2
G JTextField: Feld für Ausgabe von Meldungen Allgemeine Java-Themen 14
B Formatierte Ausgabe Allgemeine Java-Themen 3
G Einlesen der Ausgabe eines Shellskripts mit Java Allgemeine Java-Themen 2
B Fehler bei Ausgabe in Datei Allgemeine Java-Themen 11
G Ausgabe Allgemeine Java-Themen 9
W Relative Pfadangabe in JEditorPane zur lokalen Datei Allgemeine Java-Themen 2
A Auswahl eines JEditorPane das Sich in einem JScrollPanel Befindet Allgemeine Java-Themen 2
A jEditorPane Html Datei öffnen (code) Allgemeine Java-Themen 3
C JEditorPane langsam großes HTML Allgemeine Java-Themen 8
T TextArea, JTextPane, JEditorPane Allgemeine Java-Themen 11
StrikeTom Swing JEditorPane automatischer Umbruch Allgemeine Java-Themen 4
W CSS in JEditorPane Allgemeine Java-Themen 32
I Teilweise falsche Darstellung jap. Zeichen im JEditorPane mit RTFEditorKit aus RTF-Datei Allgemeine Java-Themen 5
S Swing mit JEditorPane per HTML auf Bilder in JAR zugreifen. Allgemeine Java-Themen 3
E JTextArea / JEditorPane + Text formatieren Allgemeine Java-Themen 3
T JavaScript aus HTML im JEditorPane ausführen? Allgemeine Java-Themen 5
Iron Monkey JEditorPane mit Refresh von Meta Allgemeine Java-Themen 7
S ImageTag in JEditorPane Allgemeine Java-Themen 2
R JTextPane (JEditorPane) ignoriert JScrollPane Allgemeine Java-Themen 5
U JEditorPane & copy'n'paste Allgemeine Java-Themen 34

Ähnliche Java Themen

Neue Themen


Oben