我的应用程序遇到了同样的问题。我的应用程序有一个“运行”按钮,它执行一些操作并将结果输出到Jtextarea。我不得不从线程中调用该方法。这是我所做的。
我有几个可以完成的动作单选按钮,然后有一个“运行”按钮可以执行该特定动作。我有一个称为验证的操作。因此,当我检查该单选按钮并单击“运行”按钮时,它将调用方法validate()。所以我首先将此方法放入实现Runnable的内部类中
class ValidateThread implements Runnable { public void run() { validate(); }}然后,我在“运行”按钮的ActionListener中调用了该线程
runButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { // Some pre checked on some radio buttons if(radioButton.isSelected()) { if(radioButton.getText().equals("VALIDATE")) { Runnable runnable = new ValidateThread(); Thread thread = new Thread(runnable); thread.start(); } } }});瞧!现在将输出发送到Jtextarea。
现在,您会注意到Jtextarea不会随着文本向下滚动。因此,您需要将插入符号位置设置为
textarea.setCaretPosition(textarea.getText().length() - 1);
现在,将数据添加到Jtextarea时,它将始终向下滚动。



