如何在JTextPane中实现自动换行,如何让它包装一个没有空格的字符串?

时间:2011-08-12 06:48:46

标签: java swing word-wrap jtextpane styleddocument

如何在JTextPane中实现自动换行?

我试图准确理解它是如何工作的,以便我可以修改行为。现在,如果我在JScrollPane中有一个标准的JTextPane,它会在空格处中断文本,但不会在长单词内部 - 如果有一个文本字符串没有比窗口宽的空格,它将不会换行/中断将出现一个水平滚动条。随着文本宽度的增加,ParagraphView的宽度(通过getWidth())会增加以保存文本。

This article by Lapitsky表示LabelView.getBreakWeight()为带有空格的标签返回View.ExcellentBreakWeight,为没有空格的标签返回View.GoodBreakWeight(GlyphView.java中的代码似乎证实了这一点),为什么不它打破了吗?它是以某种方式返回BadBreakWeight而不是GoodBreakWeight?还是有一些布局问题?还是有错误?

这是一些代码(为了您的观看乐趣):

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

请注意,如果我取出滚动窗格并仅使用文本窗格(它只是在窗口外面时会被剪裁),它仍然不会换行。


Swing的javadoc似乎没有详细介绍一些对象(如JTextPane,View和相关对象)如何协同工作。是否还有关于此类课程设计的进一步文档,或许详细说明了每个课程的目的以及它们如何一起工作?它不公开吗? (或者我是唯一一个遇到类似问题的人吗?或者说文档不足以限制一些典型的开发人员不会处理的事情?)

1 个答案:

答案 0 :(得分:5)

关于自定义换行的链接(强制换行和无换行)。 http://java-sl.com/wrap.html

关于字母换行的链接 http://java-sl.com/tip_html_letter_wrap.html