嗨,我试图在循环中setText到JTextArea,但我想这样做,在每个循环中的每一行都将在frame中看到。
我已经尝试了Thread.sleep(500),因为我认为循环太快了,不能设置每一行,但它没有帮助。
有可能吗??去做这件事?我想这样做是为了向用户显示从数据库下载文件的进度。
发布于 2011-06-09 02:34:42
基于事件的单线程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)
有一种更好的方法可以做到这一点,那就是重用计时器,并在完成所有操作后停止计时器,但它有点冗长
发布于 2011-06-09 02:04:51
我认为JTextArea.append(text)可能更有用。
https://stackoverflow.com/questions/6283166
复制相似问题