首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java Swing怎么实时刷新JTextArea,以显示刚才加append的内容

2012-09-01 
Java Swing如何实时刷新JTextArea,以显示刚才加append的内容在代码中执行完textArea.append(message)后,

Java Swing如何实时刷新JTextArea,以显示刚才加append的内容

在代码中执行完textArea.append("message")后,如果你想让这个更新立刻显示在界面上而不是等swing的主线程返回后刷新,我们一般会在该语句后调用textArea.invalidate()和textArea.repaint()。问题是这个方法并不能有任何效果,textArea的内容没有任何变化,这或许是swing的一个bug,有一个笨拙的办法可以实现这个效果,就是执行以下语句  textArea.paintImmediately(textArea.getBounds());或  textArea.paintImmediately(textArea.getX(), textArea.getY(), textArea.getWidth(), textArea.getHeight());这时,你会发现你刚才增加的消息已经被实时地显示出来了。

?

1 楼 saga_java 2012-06-07   你确信textArea.append("message")是运行在swing事件处理线程上?

SwingUtilities.invokeLater(new Runnable() {

     @Override
     public void run() {
         textArea.append("message");
     }
}); 2 楼 周凡杨 2012-06-07   应该是在Frame窗口的线程上,因为我点击按钮后,去进行数据处理,数据处理需要很长时间,此时按钮一直呈现的是被点击的样式,Frame线程被阻塞了,所以textArea.append("message");运行后,文本框里没有实时的呈现出来!
而且现在还有另一种方法,就是在处理数据时,另起一个线程,此时不管处理数据需要多长时间,textArea.append("message");运行后,文本框里会实时呈现出来! 3 楼 saga_java 2012-06-07   比较耗费时间的操作不应该在swing事件处理线程上,只有另起一个线程

热点排行