嗨我试图在循环中将setText设置为JTextArea但是我想这样做,每个循环中的每一行都会在帧中看到。
我已经尝试Thread.sleep(500)
,因为我认为循环太快而无法设置每一行,但它没有帮助。
有可能吗?去做吧 ?我想这样做是为了向用户展示从数据库下载文件的进度。
答案 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) 还有一种更好的方法可以重复使用计时器,并在完成所有操作后将其停止,但是它有点冗长