循环中的java setText

时间:2011-06-08 18:00:38

标签: java loops sleep

嗨我试图在循环中将setText设置为JTextArea但是我想这样做,每个循环中的每一行都会在帧中看到。

我已经尝试Thread.sleep(500),因为我认为循环太快而无法设置每一行,但它没有帮助。

有可能吗?去做吧 ?我想这样做是为了向用户展示从数据库下载文件的进度。

2 个答案:

答案 0 :(得分:2)

我认为JTextArea.append(text)可能更有用。

答案 1 :(得分:2)

基于事件的单线程guis的性质使得只有在完全处理事件(从事件处理程序返回)后才能看到更改

阻止事件派发线程无济于事(甚至使整个应用程序无响应

你应该使用一个计时器来模拟当时添加一个计时器,并在

之间延迟
final String[] lines;
for(int i=0; i<10; i++){
    Timer t = new Timer(500*i,new ActionListener(){
        int ind=i;
        void actionPerformed(ActionEvent e){
            area.setText(area.getText() + "\n ..."); 
        }
    });
    t.start();
}

这会创建10个计时器,每个计时器在一段时间后增加一行(增量为500) 还有一种更好的方法可以重复使用计时器,并在完成所有操作后将其停止,但是它有点冗长