4

表示されている行の全幅を強調表示する JEditorPane を取得しようとしています。私が試したすべての例は、テキストの内容のみを強調しています。たとえば、次のようなコンテンツがある場合:

 ---------------------------------
|Here is some text                |
|some more text                   |
 ---------------------------------

上のボックスで表される JEditorPane 内で、最初の行を強調表示すると、「Here is some text」(以下の [ と ] で表される) だけが強調表示されます。

 ---------------------------------
[Here is some text]               |
|some more text                   |
 ---------------------------------

次のように JEditorPane の全幅を強調表示したいと思います。

 ---------------------------------
[Here is some text                ]
|some more text                   |
 ---------------------------------

これを行う方法はありますか?

4

2 に答える 2

4

これはあまり複雑ではないようです。私はそれを少しコードチャレンジにします。

DefaultHighlighter を拡張して、独自のカスタム ハイライターを作成するだけです。

メソッドをオーバーライドしpaint()、長方形ペイントの幅をそのままにしておきます。これがパネルの幅になります。

DZone Snippets に完全な例があります: コピーして実行してください。これがあなたが求めているものかどうか教えてください。これには、textPane.setSelectionColor(new Color(1.0f, 1.0f, 1.0f, 0.0f));回答で言及した追加が含まれます。

代替テキスト http://www.freeimagehosting.net/uploads/94a3a990e4.png

于 2008-12-09T21:23:08.100 に答える
1

選択範囲の強調表示がVonCのソリューションに干渉するのを防ぐために、TextHighlightコンストラクターに次の行を追加しました(基本的に選択範囲の強調表示を非表示にします)。

textPane.setSelectionColor(new Color(1.0f, 1.0f, 1.0f, 0.0f));
于 2008-12-11T15:52:38.203 に答える