本人今天做作业的时候遇到一个问题
我要做的是 在一个方法里面读取一些数据 每当读出一个数据 我就用append方法加到TextArea里面
本想以为可以做到类似于一些程序安装或者有间隔读取那样的效果
但结果很出乎意料
我发现在那个方法执行完之前
TextArea是不会有任何改变的
到执行完了 就把之前那些数据全部一并显示出来了
完全没间隔
我试着用线程在每个append之前sleep 2秒
但仍然没办法显示
我想问的是 有没方法让TextArea执行append时即时显示
而不用等调用appeng的方法结束后TextArea才作出改变
文笔不好 表达有点牵强 希望各位能帮帮我
我要做的是 在一个方法里面读取一些数据 每当读出一个数据 我就用append方法加到TextArea里面
本想以为可以做到类似于一些程序安装或者有间隔读取那样的效果
但结果很出乎意料
我发现在那个方法执行完之前
TextArea是不会有任何改变的
到执行完了 就把之前那些数据全部一并显示出来了
完全没间隔
我试着用线程在每个append之前sleep 2秒
但仍然没办法显示
我想问的是 有没方法让TextArea执行append时即时显示
而不用等调用appeng的方法结束后TextArea才作出改变
文笔不好 表达有点牵强 希望各位能帮帮我
专门为程序员打造的高质低价男士纯棉T恤:http://t4coder.us
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Test extends JFrame
{
JTextArea jta = new JTextArea(20, 30);
public Test()
{
JScrollPane pane = new JScrollPane(jta);
add(pane);
pack();
setVisible(true);
start();
}
void start()
{
try
{
for(int i = 0; i < 1200000; i++)
{
jta.append(i + "\n");
jta.setCaretPosition(jta.getText().length() - 1);
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
public static void main(String[] args)
{
new Test();
}
}
另外,如果是一行一行的数据的话,我觉得应该有更合适的控件来完成这个功能。 比如,JTable?