Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JTextPane中实现单词包装,如何使它包装一个没有空格的字符串?_Java_Swing_Word Wrap_Jtextpane_Styleddocument - Fatal编程技术网

Java 如何在JTextPane中实现单词包装,如何使它包装一个没有空格的字符串?

Java 如何在JTextPane中实现单词包装,如何使它包装一个没有空格的字符串?,java,swing,word-wrap,jtextpane,styleddocument,Java,Swing,Word Wrap,Jtextpane,Styleddocument,在JTextPane中,单词包装是如何实现的 我试图准确地理解它是如何工作的,这样我就可以修改它的行为。现在,如果在JScrollPane中有一个标准的JTextPane,它将在空格处断开文本,但不会在长单词中断开文本-如果有一个没有空格的文本字符串比窗口宽,它将不会换行/断开,并且会出现一个水平滚动条。随着文本宽度的增加,段落视图的宽度(通过getWidth())增加以容纳文本 说明LabelView.getBreakWeight()对于带空格的标签返回View.ExcellentBreakW

在JTextPane中,单词包装是如何实现的

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

说明LabelView.getBreakWeight()对于带空格的标签返回View.ExcellentBreakWeight,对于不带空格的标签返回View.GoodBreakWeight(GlyphView.java中的代码似乎证实了这一点),那么为什么它不中断呢?它是否以某种方式返回坏的Breakweight而不是好的Breakweight?还是布局有问题?还是有虫子

以下是一些代码(供您查看):

请注意,如果我拿出滚动窗格,只使用文本窗格,它仍然不会自动换行(它只是在离开窗口时被剪裁)



Swing的javadocs似乎没有对某些对象(如JTextPane、View和相关对象)如何协同工作进行足够的详细说明。是否有关于此类类设计的进一步文档,可能详细说明了每个类的用途以及它们是如何协同工作的?它只是不公开吗?(或者我是唯一一个遇到类似问题的人?或者文档不足仅限于典型开发人员不需要处理的事情?

关于自定义换行(强制换行和不换行)的链接。

关于信件包装的链接

给定的示例确实有效,但换行符被忽略!请尝试您的第二个链接,并稍作调整:
htmlTextPane.setText(“firstLine
secondLine
thirdLine
。这将支持信函包装,但会忽略

换行符。我无法解决此问题,即使将代码摘录与可找到的相应原始方法和进行混合。第二个链接确实是我想要的。感谢您发布此链接!”!
//somewhere inside JPanel or JFrame constructor
JTextPane textPane = new JTextPane();
JScrollPane scrollPane = new JScrollPane(textPane);
add(scrollPane);