0

編集-要するに、私が探しているのは、JEditorPaneに左マージンを追加するための信頼できる方法です(必要に応じて、私が抱えている問題を読んでください)。


JEdi​​torPaneでテキストのスタイルを設定しようとしていますが、かなり成功しています。私が直面している唯一の問題は、マージンを作成することが不可能に見えることです。

基本的に、PlainViewを拡張し、drawUnselectedTextメソッドをオーバーライドしました。今のところ、テキストを赤に着色してフォントを変更するだけです。また、drawSelectedTextメソッドをオーバーライドして、テキストに色を付けました。

これは、カーソル位置などに関係なく、テキストが選択されているかどうかに関係なく、一貫して機能します。マージンが設定されていない限りです。

ただし、JEditorPaneにマージンを設定すると、JEditorPaneはほとんどの場合しか機能しません。それが機能しない唯一のケースは、任意の行の左端の文字から選択が行われた場合です。その場合、余白は単に無視され、選択したテキストはJEditorPaneの左端に表示されます。

私はこれが他のほとんどの人がおそらく経験していないかなり特定の問題であることを知っています、そして私はこれについてネット上で何も見つけませんでした、しかし私はここの誰かが解決策を持っていることを望んでいます。

何か案は?私がやっていること以外の方法を使ってマージンを設定することを可能にするものでさえ、非常に役に立ちます。

4

1 に答える 1

0

私はこの問題のエレガントな解決策を見つけることをあきらめました。基本的に、バグが発生する条件(左からの選択など)が存在するかどうかをテストするハックを作成し、存在する場合はテキストのレンダリングを調整します。

ハックは移植性と保守性に悪いことが多いので、私は本当に好きではありませんが、これはうまくいくようです。それを抽象化して、何も壊さないことを願っています。

いずれにせよ、それが重要なポイントです。返事はありませんでしたが、少なくとも何かを考えようとした人もいると思いますので、よろしくお願いします:)

ところで-誰かがエレガントな解決策を思い付くことができれば、私は自分の答えの代わりにそれを受け入れます(とにかく2日間はできません)。


編集:これが私がJavaが好きな理由の1つです。ハックによって移植性の問題が発生する可能性は低くなります。これはレンダリングに関連していますが(Graphicsオブジェクトとの相互作用を通じて機能します)、どのOSでも機能するはずです。

于 2010-06-20T04:34:04.147 に答える