【问题标题】:JTextArea does not scroll automatically to most bottom lineJTextArea 不会自动滚动到最底线
【发布时间】:2018-06-26 14:20:00
【问题描述】:

所以基本上我有一个JScrollPane,其中包含一个JTextArea

public class Console extends JScrollPane {
    private JTextArea textArea = new JTextArea();

    public Console() {
        super();

        DefaultCaret caret = (DefaultCaret) textArea.getCaret();
        caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

        setViewportView(textArea);
        setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        setPreferredSize(new Dimension(1000, 400));
}

随着更新策略的设置,它会自动向下滚动到新添加的行。但是,如果我在文本区域中标记文本或自己上下滚动,这将不再起作用。新行不再显示,我必须自己向下滚动。

我什至尝试对每个新添加的行重新设置策略。

public void print(String txt) {
    DefaultCaret caret = (DefaultCaret) textArea.getCaret();
    caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
    textArea.append(getNewLogMsg(txt));
}

自动滚动仍然不起作用。 有什么建议吗?

【问题讨论】:

    标签: java swing awt jscrollpane jtextarea


    【解决方案1】:

    我最终这样做了,似乎不对,但它有效

    public void print(String txt) {
        textArea.append(getNewLogMsg(txt));
        textArea.setCaretPosition(textArea.getDocument().getLength());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多