JTextArea 不会自动滚动到最底线

JTextArea does not scroll automatically to most bottom line

所以基本上我有一个 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));
}

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

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

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