7

JTextPane では、ワードラップはどの程度正確に実装されていますか?

動作を変更できるように、それがどのように機能するかを正確に理解しようとしています。現在、JScrollPane 内に標準の JTextPane がある場合、テキストはスペースで分割されますが、長い単語内では分割されません。ウィンドウよりも広いスペースのないテキストの文字列がある場合、ラップ/ブレークは行われず、水平スクロールバーが表示されます。テキストの幅が増えると、ParagraphView の幅が (getWidth() を介して) テキストを保持するために増加します。

Lapitsky によるこの記事では、LabelView.getBreakWeight() は、スペースのあるラベルに対しては View.ExcellentBreakWeight を返し、スペースのないラベルに対しては View.GoodBreakWeight を返すと述べています (そして、GlyphView.java のコードはこれを確認しているようです)。GoodBreakWeightの代わりにBadBreakWeightを返すのですか?それともレイアウトに問題があるのでしょうか? それともバグがありますか?

ここにいくつかのコードがあります(あなたの楽しみのために):

//somewhere inside JPanel or JFrame constructor
JTextPane textPane = new JTextPane();
JScrollPane scrollPane = new JScrollPane(textPane);
add(scrollPane);

スクロール ペインを取り出してテキスト ペインだけを使用しても、まだ折り返されないことに注意してください (ウィンドウの外に出たときにクリップされます)。


Swing の Javadoc では、一部のオブジェクト (JTextPane、View、および関連オブジェクトなど) がどのように連携するかについて十分に詳しく説明されていないようです。おそらく、各クラスの目的とそれらがどのように連携するかを詳述している、そのようなクラスの設計に関するドキュメントはありますか? 一般公開されてないだけ?(または、このような問題を抱えているのは私だけでしょうか? それとも、不十分なドキュメントは、一般的な開発者が扱うとは予想されないものに限定されているのでしょうか?)

4

1 に答える 1

5

カスタム ラップに関するリンク (強制ラップとラップなし)。 http://java-sl.com/wrap.html

レターラップに関するリンク http://java-sl.com/tip_html_letter_wrap.html

于 2011-08-12T07:04:25.000 に答える