首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JTextPane中对长词进行换行(Java7)

在JTextPane中对长词进行换行(Java7)
EN

Stack Overflow用户
提问于 2011-12-29 18:33:39
回答 4查看 5.3K关注 0票数 16

在Java6之前的所有版本中,放在JScrollPane中的JTextPane的默认行为是:如果可能,在单词边界处换行。如果没有,那么无论如何都要包装它们。

在JDK 7中,默认行为似乎是:如果可能,在单词边界处换行。如果不是,只需扩展JTextPane的宽度(不要换行过长的单词)。

这很容易重现,这是一个SSCCE:

代码语言:javascript
复制
public class WrappingTest extends JFrame
{

    public static void main ( String[] args )
    {
        new WrappingTest(); 
    }

    public WrappingTest ()
    {
        setSize(200,200);
        getContentPane().setLayout(new BorderLayout());
        JTextPane jtp = new JTextPane();
        JScrollPane jsp = new JScrollPane(jtp);
        jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        getContentPane().add(jsp,BorderLayout.CENTER);
        setVisible(true);
    }

}

只需在JDK 6和JDK 7中运行它,编写一些小单词和一个长单词,您就会看到不同之处。

我的问题很简单。JDK 7中的新默认行为完全搞乱了我的一个程序(他们在Oracle更改这种默认行为时应该更加小心……它们看起来并不重要,但当您使用JTextPane显示通常包含非常长的字母字符串的数据时,它们并不是那么不重要-事实上,我将提交一份错误报告,但如果它们不能解决这个问题,我希望有一个解决办法)。有没有办法回到之前的行为?

请注意,我已经检查了相关问题How is word-wrapping implemented in JTextPane, and how do I make it wrap a string without spaces?的答案,但它并没有回答这个问题-它提供了一种使JTextPane换行而完全不考虑空格的方法,但对我来说,所需的行为是在可能的情况下在空格处分割线条,如果不可能的话在其他地方(如在以前的Java版本中)。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8666727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档