[英]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.