Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在追加后自动向下滚动JTextArea?_Java_Swing_Jtextarea - Fatal编程技术网

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

Java 如何在追加后自动向下滚动JTextArea?,java,swing,jtextarea,Java,Swing,Jtextarea,我创建了一个JFrame,带有一个JTextArea。我想在每次追加后自动向下滚动文本区域。我应该如何管理它 我尝试了log.setCaretPosition(log.getDocument().getLength()),但没有更改 package scrollit; import java.awt.*; import javax.swing.*; import static javax.swing.JFrame.EXIT_ON_CLOSE; public class ScrollIt ex

我创建了一个JFrame,带有一个JTextArea。我想在每次追加后自动向下滚动文本区域。我应该如何管理它

我尝试了
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");
    }
}
有两种方式(但必须置于)

a) 设置(正确的方式)

e、 g


b) 使用(从
JScrollPane
)移动到它的最大值我的更简单、更高效。我们将插入符号设置为文本的长度,以便像这样将其放在末尾

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

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

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