在TextArea上打印交易状态

时间:2013-08-26 10:57:34

标签: java swing design-patterns

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

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组件都依赖于此方法。任何人都可以建议我一个更好的设计选择。

提前致谢!

1 个答案:

答案 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