java更新文本区域

时间:2010-03-28 04:01:40

标签: java textarea

对于我的应用程序,我必须构建一个小的自定义时间自动收报机,在我告诉它的任何延迟之后,它会在我的textArea中写入新值。问题是自动收报机完全运行直到终止时间,然后打印所有值。如何在代码运行时更改文本区域。

while(tick<terminationTime){
    if ((System.currentTimeMillis()) > (msNow + delay)){
        msNow = System.currentTimeMillis();
        tick = tick + 1;
        currentTime.setText(""+tick);
        sourceTextArea.append(""+tick+"  " +  System.currentTimeMillis() +" \n");
    }
}

currentTime和sourceTextArea都是文本区域,并且在while循环结束后都会更新。

2 个答案:

答案 0 :(得分:1)

也许尝试使用SwingWorker类(在javadocs中查看)和随附的get()方法。

答案 1 :(得分:1)

这是一个适用于2个线程的示例。

这是更新主题。

public class updateThread extends Thread
{
textAreaTest aa;
Integer i;
public updateThread(textAreaTest abc)
   {
            aa = abc;
            i = 0;
   }

@Override
   public void run()
   {
        while(true)
            {
                try
                  {
                      sleep(1000);
                  }
              catch (InterruptedException e)
                  {
                      //e.printStackTrace();
                  }
              aa.setText(i.toString());
              i++;
            }
   }

}

这是Jpanel

import java.awt.Container;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class textAreaTest extends javax.swing.JFrame
{
JTextArea area = new JTextArea();

public static void main(String[] args)
    {
        new textAreaTest();
    }

public textAreaTest()
    {
        updateThread thread = new updateThread(this);
        JPanel panel = new JPanel();
        panel.add(area);
        this.setSize(100, 100);
        Container c = this.getContentPane();
        c.add(area);
        this.pack();
        this.setVisible(true);
        thread.start();
    }

public void setText(String text)
    {
        area.setText(text);
    }
}