2013-08-26 5 views
1

Я разрабатываю проект, который выполняет следующие действия:Статус транзакции с печатью на TextArea

1.отключите временную таблицу T1.

2. Вставьте несколько тысяч строк во временную таблицу T1.

3. Выполните процедуру, в которой есть некоторые фиксаторы.

4.insert строки из таблицы T1 к другой идентичной таблице (по отношению к структуре) T2

5.Execute более 2 процедур.

Теперь я создал пользовательский интерфейс поворота, который содержит TextArea, на котором я хочу распечатать статус транзакции. Что-то вроде этого

чтения файла Excel .. Validating Excel File .. вставка записей в таблицу T1 .. и так далее

Я сделал следующий метод для обновления статуса на каждом шагу.

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

Вызов этого метода наряду с заявлениями, где я сделать

log.debug(message) делает работу для меня! Однако это усложняет мой дизайн кода. Каждый DAO-компонент теперь зависит от этого метода. Может ли кто-нибудь предложить мне лучший вариант дизайна.

Спасибо заранее!

ответ

2

log.debug (message) выполняет эту работу для меня! Однако это усложняет мой код . Каждый DAO-компонент теперь зависит от этого метода. Может ли предложить мне лучший вариант дизайна.

  • у вас есть проблемы с Concurency in Swing, завернуть statusText.append (сообщение + "\ п"); в invokeLater,

  • Качели однопоточный, и все обновления к уже видимому свингу Gui должны быть сделано на Event Dispatch Thread

  • может быть, вы можете посмотреть на SwingWorker, ничего ясного от публикуемого описания, только то, что может быть трудно и долго работает, говорить о проблеме EDT

  • уменьшить procesors и расход использовать соответствующие методы для добавления нового 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 
+0

Свинг-работник кажется хорошим вариантом. Однако в моем случае за один раз запускается только один экземпляр программы. В таком случае я должен пойти на Swing Worker? –

+1

yes SwingWorker по умолчанию не может использоваться повторно, совместно, новый пробег равен новому экземпляру – mKorbel

Смежные вопросы