2012-04-12 7 views
2
HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, null); 

Das Ergebnis:HTMLEditorKit insertHTML fügt eine neue Zeile Tag auf den String

"Test 
" 

-Added '\ n'

HTMLEditorKit.insertHTML(doc, doc.getLength(), "Test", 0, 0, HTML.Tag.B); 

Das Ergebnis:

"Test</b>" 

Wie make text mit nichts am ende hinzugefügt?

Ich benutze JTextPane. Packen einer Methode mit dem Namen "append (string)" mithilfe der Methode hTMLEditorKit.insertHTML zum Anhängen von Text.

aber wenn ich einige Zeichenfolgen wie "123" anfügen; "456"; "789";

Ich habe anhängen nie Zeichenfolge wie "
"

die Komponente kann nicht angezeigt werden, dass ich wollte:

123456789 

Es wird der Text wie in JTextPane anzuzeigen:

123 
456 
789 

Antwort

2

Zunächst einmal weiß ich nicht, ob Sie Ihr Problem bereits gelöst haben, wenn Sie bedenken, dass Sie diese Frage vor drei Monaten gestellt haben, hehe. Aber ich hatte auch dieses Problem und dachte, ich würde posten, wie ich es gelöst habe.

Dies könnte eine hässliche Lösung sein, aber das ist, wie ich es tat:

HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>123</span>", 0, 0, HTML.Tag.SPAN); 
HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>456</span>", 0, 0, HTML.Tag.SPAN); 
HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>789</span>", 0, 0, HTML.Tag.SPAN); 

:

HTMLEditorKit.insertHTML(doc, doc.getLength(), "<span>Test</span>", 0, 0, HTML.Tag.SPAN); 

würde Ebenso die folgenden aufeinander folgenden insertHTML Anrufe die Zahlen in der Art und Weise Sie wollten drucken Ich bin mir nicht sicher, warum es nicht reicht, nur das span-Tag in die Zeichenfolge aufzunehmen, aber Sie müssen auch den HTML.Tag.SPAN mit dem Funktionsaufruf übergeben (was so lange gedauert hat, bis ich es herausgefunden habe). Vielleicht überschreibt es das Standardverhalten des Hinzufügens von Zeilenumbrüchen, wenn kein Tag-Objekt angegeben wurde.

Nur Problem mit diesem Ansatz ist, dass Sie alle diese span-Tags bekommen, die das html-Dokument überfluten, das für mich mindestens unerwünscht ist.

Wenn es eine andere (elegantere) Möglichkeit gibt, das HTMLEditorKit so zu manipulieren, dass es nicht automatisch Zeilenumbrüche hinzufügt, würde ich es gerne wissen.

0

ich gefunden:

Sie müssen nur ersetzen „“ durch die Unicode für sie.Sie können einen documentFilter verwenden oder den Raum Keystroke abfangen:

protected class Filtre extends DocumentFilter implements Serializable { 

    public Filtre() { 
    } 

    @Override 
    public void insertString(DocumentFilter.FilterBypass fb, int offset, String str, AttributeSet attr) throws BadLocationException { 
     replace(fb, offset, 0, str, attr); 
    } 

    @Override 
    public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String str, AttributeSet attrs) throws BadLocationException { 
     String result = str.replaceAll(" ", "\u00A0"); 
     fb.replace(offset, length, result, attrs); 
    } 
0

Ich denke, es eine einfache Lösung für dieses Problem war, mit:

doc.insertString(doc.getLength(), "Test", null); 

, wenn Sie Klartext hinzufügen möchten, und HTMLEditorKit.insertHTML wenn html.

Verwandte Themen