我正在开发一个执行以下操作的项目:
1.cuncate临时表T1。
2.将几千行插入临时表T1。
3.执行一个包含一些commit语句的过程。
4.将表T1中的行插入到其他相同的表(相对于结构)T2
5.再执行2个程序。
现在我已经制作了一个包含TextArea的swing UI,我想在其上打印交易状态。像这样的东西
阅读Excel文件.. 验证Excel文件.. 将条目插入表T1 ..等等
我已经采用以下方法来更新每一步的状态。
public void updateStatus(String message){
String temp = this.statusText.getText();
this.statusText.setText(temp + message + "\n");
}
调用此方法以及我所做的语句
log.debug(message)
为我做的工作!然而,这使我的代码设计复杂化。现在每个DAO组件都依赖于此方法。任何人都可以建议我一个更好的设计选择。
提前致谢!
答案 0 :(得分:2)
log.debug(message)为我做的工作!然而,这使我复杂化 代码设计。现在每个DAO组件都依赖于此方法。能够 有人建议我一个更好的设计选择。
您遇到Concurency in Swing问题,请将statusText.append包裹起来(消息+" \ n");到invokeLater
,
Swing是单线程的,必须在Event Dispatch Thread上完成对已经可见的Swing GUi的所有更新
也许你可以看一下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