繁体   English   中英

如何在追加后自动向下滚动JTextArea?

[英]How to auto scroll down JTextArea after append?

我用JTextArea创建了一个JFrame。 我想在每次追加后自动向下滚动textarea。 我该如何管理它?

我试过log.setCaretPosition(log.getDocument().getLength()); 但没有改变。

package scrollit;

import java.awt.*;
import javax.swing.*;
import static javax.swing.JFrame.EXIT_ON_CLOSE;

public class ScrollIt extends JFrame {    

    public static void main(String[] args) {            
        ScrollIt sc = new ScrollIt();            
    }

    public ScrollIt() {
        super();            
        JTextArea log = new JTextArea();
        log.setPreferredSize(new Dimension(50,50));
        setDefaultCloseOperation(EXIT_ON_CLOSE);            
        add(log);            
        pack();
        setVisible(true);

        log.append("a\n");
        log.append("b\n");
        log.append("c\n");
        log.append("d\n");
        log.append("e\n");
        log.append("f\n");
    }
}

有两种方法(但JTextArea必须放在JScrollPane中

a)设置插入符号 (方法正确)

例如

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

b)使用JScrollBar (从JScrollPane )移动到其最大值

我的有点简单和有效。 我们将插入符号设置为文本的长度,以便将其放在最后。

public void appendText(String str){
    txtArea.append(str + "\n");
    scrollDown();
}

public void scrollDown(){
    txtArea.setCaretPosition(txtArea.getText().length());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM