JEditorPane - Absätze werden nicht gespeichert

bispi

Mitglied
Hallo zusammen,
ich habe eine JEditorPane (text/html) mit der kann ich html Seiten laden und speichern. Ich kann auch selbst Text schreiben, diesen formatieren und speichern, die Formatierung wird soweit gespeichert aber keine Zeilenumbrüche. Siehe die Bilder vorher/nachher. "nachher" ist nach dem speichern und laden.

Hat jemand eine Idee?

Hier noch der html-Code, der gespeicherten Seite:
HTML:
<html>
  <head>
    
  </head>
  <body>
    Zeile 1
<b>Zeile 2</b>
Zeile 3
  </body>
</html>

Danke und Gruß
bispi
 
Zuletzt bearbeitet von einem Moderator:

Ebenius

Top Contributor
Seltsam. Mein Test macht das nicht so:
Java:
/* $Id$ */

/* Copyright 2010 Sebastian Haufe

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       [url]http://www.apache.org/licenses/LICENSE-2.0[/url]

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License. */

package com.ebenius;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

import javax.swing.*;

/**
 * TODO: Javadoc me!
 * 
 * @version $Revision$ as of $Date$
 * @author Sebastian Haufe
 */
public class HTMLEditorTestGui {

  private static void createAndShowGui() {
    final JEditorPane editorPane = new JEditorPane();
    editorPane.setContentType("text/html");
    editorPane.setPreferredSize(new Dimension(100, 100));

    // dump button
    final JButton button = new JButton(new AbstractAction("To stdout") {

      public void actionPerformed(ActionEvent e) {
        final Writer w = new OutputStreamWriter(System.out);
        try {
          editorPane.write(w);
          w.flush();
          w.close();
        } catch (IOException ex) {
          ex.printStackTrace();
        }
      }
    });

    // GUI voodoo
    final JPanel contentPane = new JPanel(new BorderLayout(6, 6));
    contentPane.add(new JScrollPane(editorPane), BorderLayout.CENTER);
    contentPane.add(button, BorderLayout.SOUTH);

    final JFrame f = new JFrame("Test Frame: HTMLEditorTestGui");
    f.setContentPane(contentPane);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setVisible(true);
  }

  /**
   * Test main method.
   * 
   * @param args ignored
   */
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

      public void run() {
        createAndShowGui();
      }
    });
  }
}

Eingabe:
Code:
ABC
DEF
GHI

Ausgabe:
HTML:
<html>
  <head>

  </head>
  <body>
    <p style="margin-top: 0">
      ABC
    </p>
    <p style="margin-top: 0">
      DEF
    </p>
    <p style="margin-top: 0">
      GHI
    </p>
  </body>
</html>
Was machst Du denn anders als mein Mini-Beispiel?

Ebenius
 

bispi

Mitglied
Gute Frage!?

Ich dachte zuerst, es liegt daran, dass ich anders speichere, aber wenn ich so speichere wie du, dann erhalte ich das gleiche Ergebnis = keine Umbrüche.

Das komische ist, dass Formatierungen (fett, kursiv, unterstrichen, Schriftgröße) gespeichert werden aber keine Umbrüche.

Kann man Umbrüche im JEditorPane ausschalten? Vielleicht habe ich in NetBeans versehentlich die Umbrüche ausgeschaltet?!
 

bispi

Mitglied
Hier ist der "böse" Quelltext für das Speichern:
Java:
private void speichernActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if (Blattname == null){
            JOptionPane.showMessageDialog(null, "Kein Blatt ausgewählt!", "Hinweis von Museion", JOptionPane.OK_CANCEL_OPTION);
            return;
        }
        if (Blattname.equals("new")){
            JOptionPane.showMessageDialog(null, "Blattname NEW ist leider nicht zulässig!", "Hinweis von Museion", JOptionPane.OK_CANCEL_OPTION);
            return;
        }        
        String[] sBlattname;
        sBlattname = PfadBlattname.split("file:");
            try {
                File tmpFile = new File(sBlattname[1]);
                if (!tmpFile.exists()){
                    tmpFile.getParentFile().mkdirs();
                    tmpFile.createNewFile();
                }
                FileWriter fw = new FileWriter(sBlattname[1]);
                fw.write(textarea.getText());               
                fw.close();
            } catch(FileNotFoundException fnfe){
                textarea.setText("FileNotFoundException: "+ sBlattname[1]);
             } catch (IOException ioe) {
		textarea.setText("IOException: ");
		}               
        bilderextrahieren();
        }

Die Methode bilderextrahieren() liest den img-Tag aus und speichert dann die Bilder separat.

Das ganze wird über ein JTree gesteuert d.h. wenn ich ein Blatt auswähle wird die entsprechende html Datei in den JEditorPane geladen inkl. Bildern.

Danke und Gruß
bispi
 

Ebenius

Top Contributor
Naja, die [c]getText()[/c]-Methode in Zeile 19 ist ja auch der falsche Weg. Die liefert Dir wirklich nur den nackeligen Text. Guck Dir nochmal mein Beispiel oben, Zeile 47ff an. Wenn Du so schreibst, funktioniert es.

Ebenius
 

bispi

Mitglied
Mit diesem Code geht es auch nicht:
Java:
try {
                File tmpFile = new File(sBlattname[1]);
                if (!tmpFile.exists()){
                    tmpFile.getParentFile().mkdirs();
                    tmpFile.createNewFile();
                }
                FileOutputStream out = new FileOutputStream(sBlattname[1]);
                Writer fw = new OutputStreamWriter(out);
                textarea.write(fw);
                fw.flush();
                fw.close();
            } catch(FileNotFoundException fnfe){
                textarea.setText("FileNotFoundException: "+ sBlattname[1]);
             } catch (IOException ioe) {
		textarea.setText("IOException: ");
		}

Neues html file wird erzeugt nur wieder keine Umbrüche.
 

Ebenius

Top Contributor
[c]textarea[/c] ist ein JEditorPane? Guck Dir am besten mal mein Beispiel oben an und versuch die Unterschiede herauszufinden.

Ebenius
 

bispi

Mitglied
Ja, "textarea" ist ein JEditorPane.

Den einzigen Unterschied, den ich sehe ist, dass Du
final Writer w ...
vor dem try hast.

Wenn ich es ebenso mache kommt nicht heraus, was sein soll.
Ist mein Fehler so offensichtlich? Ich habe keine Ahnung!
Ich muss mal die Nacht darüber meditieren, vielleicht sehe ich dann klarer.
 

Firestorm87

Bekanntes Mitglied
Also Ich habe vor längerem ein ähnliches Problem gehabt und musste feststellen, dass mein "ENTER" im Textfeld leider kein richtigen Zeilenumbruch erstellt.

Ich habe mir bisher etwas unschön damit beholfen:
Java:
public void keyReleased(final KeyEvent e) {
			if (e.getKeyCode() == KeyEvent.VK_ENTER) {
				if (this.TextArea.getSelectionStart() != this.TextArea.getSelectionEnd()) {
					this.TextArea.replaceSelection(System.getProperty("line.separator"));
				} else {
					this.TextArea.setSelectionStart(this.TextArea.getSelectionEnd() - 1);
					this.TextArea.replaceSelection(System.getProperty("line.separator"));
				}
			}
		}
wäre aber über eine saubere Lösung auch dankbar :)

PS: Ich schreib nicht in eine Datei, sondern in einen String...
 

Ebenius

Top Contributor
Firestorm, das sollte nichts damit zu tun haben. Du ersetzt nur die [c]\n[/c] unter Windows durch [c]\r\n[/c]; was ich nicht so machen würde. Lieber beim Auslesen des Textes ersetzen:
Java:
String text = textArea.getText().replaceAll("\\r?\\n", System.getProperty("line.separator"));
Wie gesagt, das sollte nichts mit der HTML-EditorPane von oben zu tun haben.

Ebenius
 
Zuletzt bearbeitet:

bispi

Mitglied
Hallo zusammen,
das Problem ist gelöst!

Mein Fehler war, dass ich die Überprüfung ob ein Ordner da ist und das Speichern in einen try gelegt habe. Nun habe ich es geteilt, sprich zwei try's verwendet und siehe da es funktioniert.

Hier der funktionierende Code:
Java:
private void speichernActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if (Blattname == null){
            JOptionPane.showMessageDialog(null, "Kein Blatt ausgewählt!", "Hinweis von Museion", JOptionPane.OK_CANCEL_OPTION);
            return;
        }
        if (Blattname.equals("new")){
            JOptionPane.showMessageDialog(null, "Blattname NEW ist leider nicht zulässig!", "Hinweis von Museion", JOptionPane.OK_CANCEL_OPTION);
            return;
        }        
        String[] sBlattname;
        sBlattname = PfadBlattname.split("file:");
        File tmpFile = new File(sBlattname[1]);
        try{
            if (!tmpFile.exists()){
                tmpFile.getParentFile().mkdirs();
                tmpFile.createNewFile();
            }
        } catch (IOException ioe) {
		textarea.setText("IOException: ");
	}
        try {                
                FileOutputStream out = new FileOutputStream(sBlattname[1]);
                final Writer fw = new OutputStreamWriter(out);
                textarea.write(fw);
                fw.flush();
                fw.close();
            } catch(FileNotFoundException fnfe){
                textarea.setText("FileNotFoundException: "+ sBlattname[1]);
             } catch (IOException ioe) {
		textarea.setText("IOException: ");
             }
        bilderextrahieren();
        }

Vielen Dank Ebenius für deine Zeit.

Gruß
bispi
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
O Soll ich einen JEditorPane verwenden ? AWT, Swing, JavaFX & SWT 5
E wie Schriftfarbe in JEditorPane verändern? AWT, Swing, JavaFX & SWT 10
P Swing JEditorPane in Kombination mit JScrollPane AWT, Swing, JavaFX & SWT 29
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
N JEditorPane und automatische Scrollposition AWT, Swing, JavaFX & SWT 2
K JEditorPane Text einfügen AWT, Swing, JavaFX & SWT 4
B JEditorPane lädt keine Schriftfarbe in HTML AWT, Swing, JavaFX & SWT 2
J JEditorPane mit HTML füllen AWT, Swing, JavaFX & SWT 2
C JEditorPane und Gifs AWT, Swing, JavaFX & SWT 2
B Swing JEditorPane ohne Zeilenumbruch nach InputStream AWT, Swing, JavaFX & SWT 2
H JScrollPane - JEditorPane und HTML-Tabelle AWT, Swing, JavaFX & SWT 2
H Swing JEditorPane und HTML AWT, Swing, JavaFX & SWT 3
S JEditorPane Zeilen zählen AWT, Swing, JavaFX & SWT 5
C Swing JEditorPane: Caret nach Rechtsklick neu setzen AWT, Swing, JavaFX & SWT 4
X JEditorPane Größe in JDialog automatisch anpassen AWT, Swing, JavaFX & SWT 2
C JTextPane / JEditorPane ohne Keywords farbig machen AWT, Swing, JavaFX & SWT 4
S JEditorPane oder JTextPane? AWT, Swing, JavaFX & SWT 2
M Swing JEditorPane: Text formatieren AWT, Swing, JavaFX & SWT 2
F Swing JEditorPane Bild mittig einbinden AWT, Swing, JavaFX & SWT 5
H Swing HTML in einem JEditorPane zeilenweise hinzufügen ohne Inhalt jedes Mal neu zu laden AWT, Swing, JavaFX & SWT 4
B 2D-Grafik Zeilen drehen im JEditorPane AWT, Swing, JavaFX & SWT 3
H Plain Text in RTF JEditorPane? AWT, Swing, JavaFX & SWT 3
D Informationen über JEditorPane gesucht AWT, Swing, JavaFX & SWT 2
C Swing Scrollbalken in JEditorPane - WIE? AWT, Swing, JavaFX & SWT 3
destroflyer Swing UTF-8 in JEditorPane darstellen AWT, Swing, JavaFX & SWT 5
J Swing JEditorPane flackert AWT, Swing, JavaFX & SWT 2
F Swing Performanceproblem mit JEditorpane AWT, Swing, JavaFX & SWT 3
S Swing HTML-Text in JEditorPane einfärben AWT, Swing, JavaFX & SWT 5
I JTextPane und Hyperlink (ohne JEditorPane) AWT, Swing, JavaFX & SWT 5
P Swing JEditorPane mit HTMLDocument - Text hinzufügen AWT, Swing, JavaFX & SWT 2
T Swing JEditorPane Groesse berechnen AWT, Swing, JavaFX & SWT 2
N Swing JEditorPane mit Farbe und Font AWT, Swing, JavaFX & SWT 2
T Swing JTextArea, JTextPane, JEditorPane...Unterschied?! AWT, Swing, JavaFX & SWT 3
K Verweise in JEditorPane AWT, Swing, JavaFX & SWT 6
B JEditorPane - Text und Graphik in HTML speichern AWT, Swing, JavaFX & SWT 4
D Swing JEditorPane wort zu lang AWT, Swing, JavaFX & SWT 11
X Swing Inhalt einer JEditorPane in Datei abspeichern AWT, Swing, JavaFX & SWT 5
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
Developer_X Swing JEditorPane.paste(Lokale_HTML); AWT, Swing, JavaFX & SWT 11
W Swing dynamisch Buttons in JEditorPane erstellen AWT, Swing, JavaFX & SWT 2
H JScrollPane (mit JEditorpane ) resizing AWT, Swing, JavaFX & SWT 2
E Swing File lesen und in JEditorpane AWT, Swing, JavaFX & SWT 2
D GridBagLayout und JEditorPane (mehrere fragen) AWT, Swing, JavaFX & SWT 2
S JEditorPane soll HTML und dann Text anzeigen..? AWT, Swing, JavaFX & SWT 5
T HTML und JEditorPane AWT, Swing, JavaFX & SWT 6
Daniel_L jEditorPane - Formatierten Text in Zwischenablage kopieren? AWT, Swing, JavaFX & SWT 2
R JEditorPane Schriftart und Schriftgröße AWT, Swing, JavaFX & SWT 3
K Instanz von JEditorPane starten AWT, Swing, JavaFX & SWT 3
W HTML-Text mit relativer URL in JEditorPane einlesen AWT, Swing, JavaFX & SWT 10
J Flackern in JEditorPane() AWT, Swing, JavaFX & SWT 14
& eigene Schriftart in JEditorpane AWT, Swing, JavaFX & SWT 2
M JEditorPane lädt HTML ohne Bilder AWT, Swing, JavaFX & SWT 2
M JEditorPane lädt HTML ohne Bilder AWT, Swing, JavaFX & SWT 2
DeeDee0815 JEditorPane + HTML + <img src=file> + JAR = FALSE AWT, Swing, JavaFX & SWT 3
G JEditorPane + F6 AWT, Swing, JavaFX & SWT 2
I Anordnungsprobleme bei JEditorPane AWT, Swing, JavaFX & SWT 5
ChMaster JEditorPane / HTMLEditorKit AWT, Swing, JavaFX & SWT 3
G JEditorPane | Homepage wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 8
J JEditorPane zeigt nicht alles AWT, Swing, JavaFX & SWT 2
I JEditorPane vorladen der Seiten unterbinden AWT, Swing, JavaFX & SWT 2
P JEditorPane mit HTMLEditorKit Text ausrichten AWT, Swing, JavaFX & SWT 2
T Projekt - ChatClient - JEditorPane - Smilies, Vektor AWT, Swing, JavaFX & SWT 2
N java.awt.Color zu HTML Farbcode (JEditorPane) AWT, Swing, JavaFX & SWT 1
T Grösse einer JEditorPane ändern AWT, Swing, JavaFX & SWT 5
G JEditorPane Zeilenumbruch verhindern AWT, Swing, JavaFX & SWT 2
F wie funktionier JEditorPane AWT, Swing, JavaFX & SWT 8
M jEditorPane String to html AWT, Swing, JavaFX & SWT 2
T DataFlavor für HTML-formatierten Text im JEditorPane AWT, Swing, JavaFX & SWT 8
G Welchen Listener für JEditorPane ? AWT, Swing, JavaFX & SWT 3
G HTML aus JEditorPane drucken AWT, Swing, JavaFX & SWT 2
F Frage zu JEditorPane und Text einfügen AWT, Swing, JavaFX & SWT 2
G JEditorPane HTML-Email versenden AWT, Swing, JavaFX & SWT 2
C getText() sinnlos bei HTMLEditorKit und JEditorPane! AWT, Swing, JavaFX & SWT 11
F Das Standardbild beim JEditorPane ersetzen? AWT, Swing, JavaFX & SWT 8
M Image-Objekte in JEditorPane anzeigen? AWT, Swing, JavaFX & SWT 3
U Bild in JEditorPane oder Aus "" mach' "/&quot AWT, Swing, JavaFX & SWT 2
I how to implement.(About JTable and the JEditorPane) AWT, Swing, JavaFX & SWT 6
S JEditorPane HTML-Text auslesen AWT, Swing, JavaFX & SWT 2
M JEditorPane und HyperLinks AWT, Swing, JavaFX & SWT 9
B JEditorPane: Höhe für bestimmte Breite bestimmen AWT, Swing, JavaFX & SWT 4
S Link in JEditorPane AWT, Swing, JavaFX & SWT 5
M JEditorPane und Bild als html? AWT, Swing, JavaFX & SWT 7
F Link aus JEditorPane ausführen AWT, Swing, JavaFX & SWT 2
S HTML-Datei in Anwendung (JEditorPane) AWT, Swing, JavaFX & SWT 5
M Jeditorpane + zeilenumbruch AWT, Swing, JavaFX & SWT 2
N File von HDD in JEditorPane laden? AWT, Swing, JavaFX & SWT 2
B In JScrollPane eingebettetes JEditorPane scrollen AWT, Swing, JavaFX & SWT 2
L Image Problems with JEditorPane AWT, Swing, JavaFX & SWT 7
D Kann jeditorPane CSS Style-Sheets und javascript AWT, Swing, JavaFX & SWT 2
T JEditorPane-content drucken AWT, Swing, JavaFX & SWT 2
T HTML in JEditorPane darstellen AWT, Swing, JavaFX & SWT 5
C JEditorPane, HTML EditorKit und HTMLDocument AWT, Swing, JavaFX & SWT 8
bernd Zeilenumbruch in JEditorPane AWT, Swing, JavaFX & SWT 10
S JEditorPane: Benachrichtigung, wenn Inhalt geladen AWT, Swing, JavaFX & SWT 2
M JEditorPane und Strg - z? AWT, Swing, JavaFX & SWT 2
S JEditorPane setText() Problem mit String übergeben AWT, Swing, JavaFX & SWT 3
S JEditorPane Tags löschen AWT, Swing, JavaFX & SWT 3
S JEditorPane AWT, Swing, JavaFX & SWT 2
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben