Interface JTextPane html formatiert kopieren

Hero2k

Neues Mitglied
Hallo zusammen!

Ich bin noch blutiger Java-Anfänger und momentan ratlos. Alles was google ausgespuckt hat, hat mir leider nicht wirklich weitergeholfen, daher hoffe ich, dass mir hier jemand helfen kann.


Ich habe ein JTextPane welches mit in HTML formatiertem Inhalt gefüllt wird. Durch HTMLEditorKit wird dies auch alles im JTextPane richtig dargestellt. Wenn ich nun allerdings diesen Inhalt aus dem JTextPane kopiere (Strg+c) und irgendwo anders einfüge (z.B. in eine .txt Datei), dann ist die komplette Formatierung weg. Damit meine ich in erster Linie, dass die Zeilenumbrüche fehlen. Das Farbe, kursiv, etc. fehlt ist klar und auch kein Problem. Allerdings sind die Zeilenumbrüche für den Text sehr wichtig.

Meine Versuche Java selbst kopieren zu lassen, in der Hoffnung dass es einen Unterschied zu strg+c gibt, endeten allerdings genau so wie mit strg+c.

Ich danke für eure Hilfe!
 
In html ist ja der Zeilenumbruch ein '<br>'
Der 'allgemeine' Zeilenumbruch ist aber '\n'

Java:
java.lang.String.replaceAll(java.lang.String, java.lang.String)
 
Hallo!

Vielen Dank für die Antwort. Leider übersehe ich wohl irgendetwas, da es nicht so ganz klappt.

Ich habe hier meinen Button der bei Benutzung den Inhalt in das JTextPane einfügt:

Java:
public void actionPerformed(ActionEvent arg0) {				
				Inhalt = "<html><body>Test<br><br>Test</body></html>";	
				TextPane.setEditorKit(new HTMLEditorKit());
				TextPane.setText(Inhalt);			
			}


Java:
Inhalt = Inhalt.replaceAll("<br>", "\n");
Wenn ich das ReplaceAll nun hinter die Zeile mit Inhalt = .. stelle dann verschwinden leider die Zeilenumbrüche im JTextPane. Ich vermute dass das HTMLEditorKit "\n" nicht beachtet? Gibt es dafür vielleicht eine Lösung?


Mein nicht ganz so zufriedenstellender Versuch mir selbst eine Möglichkeit zum Kopieren zu machen sieht so aus:

Ein Button der bei Benutzung dies ausführt:
Java:
public void actionPerformed(ActionEvent arg0) {
				Inhalt = Inhalt.replaceAll("<br>", "\n");
				Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
				StringSelection strSel = new StringSelection(Inhalt);
				clipboard.setContents(strSel, null);
			}


Das Funktioniert auch ganz gut, die Zeilenumbrüche sind vorhanden. Aber wenn ich die Zwischenablage in eine .txt Datei einfüge, habe ich leider auch die HTML Tags (<html><body> etc) mit dabei.

Bleibt mir da nur die Möglichkeit die HTML Tags ebenfalls vorher auszutauschen oder gibt es noch eine andere Möglichkeit einen in html formatierten Text, formatiert aus einem JTextPane zu kopieren?

Danke schonmal!
 

Zurück
Oben