我正在开发一个执行以下操作的项目:

1.截断临时表T1。

2.将几千行插入到临时表T1中。

3.执行一个包含一些提交语句的过程。

4.将表T1中的行插入到其他相同的表T2中(就结构而言)

5.再执行2个步骤。

现在,我已经创建了一个摆动UI,其中包含要打印交易状态的TextArea。像这样

正在读取Excel文件。
验证Excel文件
将条目插入表T1 ..等

我已采用以下方法在每个步骤中更新状态。

public void updateStatus(String message){
        String temp = this.statusText.getText();
        this.statusText.setText(temp  + message +  "\n");
}


在我做的语句中调用此方法

log.debug(message)为我做这份工作!但是,这使我的代码设计复杂化。现在,每个DAO组件都依赖于此方法。谁能建议我一个更好的设计方案。

提前致谢 !

最佳答案

log.debug(message)为我完成了工作!但是,这使我的工作变得复杂
  代码设计。现在,每个DAO组件都依赖于此方法。能够
  有人建议我一个更好的设计方案。



您对Concurency in Swing有问题,请包装statusText.append(message +“ \ n”);到invokeLater
Swing是单线程的,并且对已经可见的Swing GUi的所有更新必须在Event Dispatch Thread上完成
也许您可以看一下SwingWorker,从发布的说明中看不到什么,只有那可能是长期运行的,谈论着EDT问题
减少处理器消耗,并使用适当的方法将新的String附加到已经可见的JTextArea上,请使用statusText.append(message + "\n");而不是很困难




String temp = this.statusText.getText(); // take all string from JTextArea
this.statusText.setText(temp  + message +  "\n"); // append() a new line to

09-11 18:43
查看更多