首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JTextPane断线

JTextPane断线
EN

Stack Overflow用户
提问于 2014-12-28 14:03:10
回答 2查看 5K关注 0票数 1

this question中,问询者说

当文本超过宽度时,JTextPane有单词换行。

情况似乎并非如此。

代码语言:javascript
复制
scrollPane = new JScrollPane();
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

this.contentPane.add(scrollPane);

txtrFghj = new JTextPane();
txtrFghj.setBorder(null);
txtrFghj.setContentType("text/html");
txtrFghj.setText(content);

scrollPane.setViewportView(txtrFghj);

在给定的代码摘录中,content的内容根本不会包装,它只是超出了窗口的可见大小。如果窗口不够大,则无法完全看到长句。

怎样才能实现行包装?

我试过了

代码语言:javascript
复制
txtrFghj.setSize(50,50);

但这并没有改变任何行为。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-29 00:53:29

多亏了纪尧姆( Guillaume ),我想出来了,我花了三个小时才意识到:行中断确实是在这里工作的,但是字符串中断不起作用,正如问题中引用的thread中所引用的那样。

我的JTextPane内容如下所示:

代码语言:javascript
复制
<html>
   <body>
    <br>
    <font color="red">bla bla bla bla</font>\r\n
    <u>someVeeeeeeeeeeeeeryLooooongString__WithOUTanySpacesInBetweeeeeeeeeeeeeeeeeeeeeeeeen</u>
    <b>more text</b>
    // ........ a lot of more HTML
    Some funny SENTENCE which is longer than JTextPane.getSize().width usually allows. This sentence was NOT LINE WRAPPED which made me ask the question.
   </body>
</html>

现在,如果VeeeeryLooongString没有扩展JTextPane的宽度,那么这个句子应该是行包装的。一直以来,我都没有想到TextPane对象中的长字符串以及它如何影响整个行包装行为。

删除这个giga字符串帮我解决了这个问题。

有关此主题的更多信息,请参见本详细的question

现在,我将尝试在JTextPanes中启用字符串包装,在引用的thread中可以再次找到更多的信息。

编辑:字母包装可以完成,但似乎换行<br>不再工作了.对于给定的问题,最简单的解决方法是而不是,禁用水平滚动条并将其设置为AS_NEEDED

代码语言:javascript
复制
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
票数 1
EN

Stack Overflow用户

发布于 2014-12-28 17:56:08

您的代码中一定有其他东西阻止它正常工作。

下面是一个小示例,它的代码运行得很好:

代码语言:javascript
复制
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;

public class TestLineWrap {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TestLineWrap().initUI();
            }
        });

    }

    protected void initUI() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTextPane editorPane = new JTextPane();
        editorPane.setContentType("text/html");
        editorPane
                .setText("<html>Some long text that cannot hold on a single line if the screen is too small</html>");
        JScrollPane scrollPane = new JScrollPane(editorPane);
        scrollPane
        .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        frame.add(scrollPane);
        frame.setSize(200, 400);
        frame.setVisible(true);
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27677123

复制
相关文章

相似问题

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