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

結果:のHTMLEditorKit insertHTMLは、文字列に改行タグを追加する

"Test 
" 

-Addedは '\ n' を

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

結果:

"Test</b>" 

どのように最後に何も追加しないでテキストを作成しますか?

私はJTextPaneを使用します。 hTMLEditorKit.insertHTMLメソッドを使って "append(string)"という名前のメソッドをパッキングし、テキストを追加します。

でも、私は "123"のような文字列を追加します。 "456"; "789";

私は、コンポーネントが、私が望んでいたことを表示することはできません "
"

のように文字列を追加したことがない:

123456789 

それはJTextPaneの中のようなテキストが表示されます。

123 
456 
789 

答えて

2

まず第一に、3ヶ月前にこの質問をしたことを考えれば、あなたが問題を解決したかどうかはわかりません。しかし、私もこの問題を抱えていて、どのように解決したのかを投稿すると思っていました。

これは醜い解決策になるかもしれませんが、これは私がそれをやった方法です:

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

同様に、以下の連続したinsertHTML呼び出しは、あなたが望む方法で番号を印刷します:

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); 

文字列にspanタグを含めるだけでは不十分な理由は分かりませんが、関数呼び出しでHTML.Tag.SPANを渡す必要があります(これは時間がかかりすぎて分かりません)。 がない場合は、タグオブジェクトが指定されている場合、改行を追加するデフォルトの動作をオーバーライドしている可能性があります。

このアプローチで問題になるのは、これらのスパンタグすべてが、少なくとも私にとって望ましくないhtmlドキュメントを乱雑にしてしまうことだけです。

改行を自動的に追加しないようにHTMLEditorKitを操作する他の(優雅な)方法がある場合、私はそれについて知りたいです。

0

見つかりました:

""をユニコードで置き換えてください。あなたはdocumentFilterを使用するか、スペースキーストロークを傍受することができます

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

私が使用して、この問題の簡単な解決策があったと思う:あなたは、プレーンテキストとHTMLEditorKit.insertHTMLときを追加したいとき

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

をhtml。

関連する問題