代码之家  ›  专栏  ›  技术社区  ›  dotwin

动态添加的内容无法正确滚动(jscrollpane中的jtextpane)

  •  0
  • dotwin  · 技术社区  · 8 年前

    jscrollpane(jtextpane) 的以下行为似乎高于我的工资等级:

    我在我的框架中的滚动窗格中添加了一个文本窗格。

    textpane=new jtextpane();
    scrollbane=新建jscrollbane(文本窗格);
    < /代码> 
    
    

    如果我通过textfane.settext(“mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm”)设置文本窗格的内容,textfane is expanding and scrollbane is doing its job correctly.

    但是,如果我使用textfaneto redirectoutanderrusingmessage console,它会进行某种类型的换行。我检查了messageconsole的源代码,它不会改变textfane的任何自动换行行为。似乎textfane.getdocument().insertstring(.).causestextfaneto not expand properly.

    messageconsole mc=new messageconsole(textfane);
    mc.redirectout();
    mc.redirecterr(color.red,空);
    mc.setmessagelines(100条);
    < /代码> 
    
    

    当通过textfane.getdocument().insertString(.),输入内容时,如何避免自动换行?我已经3个多小时没有成功删除此换行符了,非常感谢您的帮助。

        textPane = new JTextPane();
        scrollPane = new JScrollPane(textPane);
    

    如果我通过textPane.setText("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"),TextPane正在展开,ScrollPane正在正确地执行其工作。

    enter image description here

    但是,如果我使用textPane重定向out和err使用MessageConsole它可以做一些自动换行。我检查了messageconsole的源,它不会改变文本窗格. 看来textPane.getDocument().insertString(.)原因文本窗格无法正确展开。

        MessageConsole mc = new MessageConsole(textPane);
        mc.redirectOut();
        mc.redirectErr(Color.RED, null);
        mc.setMessageLines(100);
    

    enter image description here

    当通过textfane.getdocument().insertString(.)?我已经三个多小时没有成功地删除这个换行符了,非常感谢您的帮助。

    1 回复  |  直到 8 年前
        1
  •  1
  •   camickr    8 年前

    在第一种情况下,当您添加一个没有空格的长文本字符串时,文本没有被拆分到新行的位置,因此,首选宽度似乎成为长文本行的宽度。

    其他行上的文本不需要换行,因为它们适合首选的宽度。

    但是,在第二种情况下,存在空格,因此文本窗格的默认行为是在视区满后自动换行。

    此包装是由 Scrollable JTextPane的接口。The default implementation of the getScrollableTracksViewportWidth() 方法返回 true ,它基本上尝试在视区的宽度中容纳所有文本,使其在可能的情况下自动换行。

    如果不希望文本换行,请签出 No Wrap Text Pane . 它显示了如何更改默认值 可滚动 文本窗格的行为 GetScrollableTracksView端口宽度() 方法返回 false .