非常にうまく機能する JTextPane によって表示される HTML ドキュメントがあります。ButtonModel の ActionListeners を使用して操作するボタンがいくつかあり、状態リンク (#foo) にフックして単純な内部アプリ リンクを処理します。
私の問題は、「値」を変更する必要がある INPUT 要素があるため、ボックス内のテキストが変更されることです。
HTMLDocument には、特定の id 属性を持つ javax.swing.text.Element を取得するためのgetElementメソッドがあります。これを使用して入力要素を取得し、呼び出します
htmlDocument.setOuterHtml(
inputElement,
"<input id=\"foo\" value=\"" + escapeHtml(newValue) + "\">"
)
inputElement の値を新しい値に置き換えます。
注、私はこれを試していません。動作するかどうかお知らせください!
JTextPane のgetText()
およびsetText()
メソッドを使用すると、コンポーネントによって表示されるテキストに完全にアクセスできます。それがたまたま HTML である場合、扱っているテキストは HTML ドキュメントであり、HTML を直接表示する場合と同様に、その HTML テキストを変更する必要があります。
INPUT
withまたは default タイプの場合はtype="text"
、テキスト フィールドを表示し、その表示値はvalue=
属性によって制御されます。
そのためには、JTextPane のテキスト値のコード内テキスト編集を行う必要があります。を使用IndexOf()
してタグのオフセットを見つけ、INPUT
もう一度value
または閉じ山かっこを見つけて、目的の位置に目的の値を挿入できます。
新しい String をすべてセットアップしたら、 を使用して JTextPane に戻しますsetText()
。終わり。