如何在 JTextPane 中实现自动换行,如何让它在没有空格的情况下换行?

问题描述 投票:0回答:1

JTextPane 中的自动换行到底是如何实现的?

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

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 和相关对象)如何协同工作。是否有任何关于此类设计的进一步文档,也许详细说明了每个类的用途以及它们如何协同工作?只是不公开吗? (或者我是唯一遇到此类问题的人吗?或者文档不足是否仅限于典型开发人员不会处理的事情?)

java swing word-wrap jtextpane styleddocument
1个回答
5
投票

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

关于信封的链接 http://java-sl.com/tip_html_letter_wrap.html

© www.soinside.com 2019 - 2024. All rights reserved.