本人今天做作业的时候遇到一个问题
我要做的是 在一个方法里面读取一些数据 每当读出一个数据 我就用append方法加到TextArea里面
本想以为可以做到类似于一些程序安装或者有间隔读取那样的效果
但结果很出乎意料
我发现在那个方法执行完之前 
TextArea是不会有任何改变的
到执行完了 就把之前那些数据全部一并显示出来了
完全没间隔
我试着用线程在每个append之前sleep 2秒 
但仍然没办法显示
我想问的是 有没方法让TextArea执行append时即时显示
而不用等调用appeng的方法结束后TextArea才作出改变
文笔不好 表达有点牵强 希望各位能帮帮我

解决方案 »

  1.   

    貌似swing一些控件有个什么invalidate方法要调用一下,03年读本科时写swing遇到过类似问题。
    专门为程序员打造的高质低价男士纯棉T恤:http://t4coder.us
      

  2.   

    我试了下,可以显示啊
    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();
    }
    }
      

  3.   

    我也觉得应该是没有问题的。是否你的jdk版本过低?或者用JTextArea试试?
    另外,如果是一行一行的数据的话,我觉得应该有更合适的控件来完成这个功能。 比如,JTable?