繁体   English   中英

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

[英]How is word-wrapping implemented in JTextPane, and how do I make it wrap a string without spaces?

JTextPane 中的自动换行究竟是如何实现的?

我试图准确地了解它是如何工作的,以便我可以修改行为。 现在,如果我在 JScrollPane 中有一个标准的 JTextPane,它会在空格处打断文本,但不会在长词内打断 - 如果有一串没有空格的文本比 window 宽,它不会换行/打断和将出现一个水平滚动条。 随着文本宽度的增加,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 的 javadocs 似乎对 go 没有足够详细地说明某些对象(如 JTextPane、View 和相关对象)如何协同工作。 是否有任何关于此类设计的进一步文档,也许详细说明每个 class 的目的以及它们如何协同工作? 它只是不公开吗? (或者我是唯一一个遇到此类问题的人吗?或者文档不足是否仅限于典型开发人员不会处理的事情?)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM