2012-08-15 147 views

回答

2

不要在Event Dispatching Thread中执行您的进程,它会阻止发生重绘更新。

你应该利用SwingWorker API的

而且,看看

让我猜猜你在做什么

while (doSomeWork) { 
    // do some processing 
    textArea.append(someText); 
} 

或者可能是for循环

而你是,一些如何期待用户界面神奇地更新?

毫无疑问,尽管我很喜欢它的工作方式,但并不是那样工作。

为了让屏幕更新,您必须允许事件派发线程继续运行,因此它可以处理重新绘制请求(&一堆其他重要的事情),您需要将处理卸载到另一个线程。

没有,没有任何其他的办法了,&最简单的方法是使用的SwingWorker

+0

我不明白。举一些例子吗?这是更简单的方法吗? – 2012-08-15 08:08:30

+1

阅读一些链接。如果你有一个特定的问题,要么搜索SO或发布一个新的问题 – MadProgrammer 2012-08-15 08:18:54

+0

请给出一些代码示例。我想像你写的那样在循环中添加行。 – 2012-08-15 09:11:43

0

我不知道,但在使用这个你的for循环: jTextArea.updateUI();

+0

它不工作我试试吧 – 2012-08-15 08:41:08

+0

尝试jframe.updateUI();或jpanel.updateUI();太。 – Amir 2012-08-15 08:45:21

+0

不,它不工作太 – 2012-08-15 09:11:14