Подождите, пока Runnables завершитсяJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Подождите, пока Runnables завершится

Сообщение Anonymous »

Я реализовал программу в javafx, которая динамически генерирует маску ввода и генерирует документ Word после нажатия кнопки на этой маске.
Я определяю в таблице базы данных, какие поля ввода доступны в этой маске.
Теперь я добавляю поддержку пользовательских процедур, которые выполняются в определенных состояниях моей программы (onFocusLost поля, onChange,...)
Это отлично работает.
Теперь я застрял в выполнении onGenerate.
Когда я визуализирую маску, я держу список Runnable для хранения моих действий, которые должны быть выполнены при генерации (Во время рендеринга я знаю, какое действие должно быть выполнено. Во время генерации мне придется снова прочитать все данные. Поэтому я решил сохранить действие с помощью FunctionalInterface. И мне не нужны ни inputParameter, ни ReturnValue... так что я закончил с Runnable)

Код: Выделить всё

TextField tf = ...;
String s = ...;

actionsBeforeGenerate.add(() -> {
tf.setText(s);
});
Итак, теперь, если я нажму кнопку «Создать», я сделаю следующее:

Код: Выделить всё

private void startGenerate(){
//main.getActionsBeforeGenerate() == List
main.getActionsBeforeGenerate().forEach(action -> action.run());

generateWordDocument();

}
Текст установлен в узле правильно, НО после того, как документ сгенерирован.
Как я могу изменить textField ДО того, как запустится моя GenerationLogic?
Если вам нужна дополнительная информация, не стесняйтесь спрашивать ее.
РЕДАКТИРОВАТЬ:
Я думаю, что нашел решение своей проблемы:

Код: Выделить всё

private void startGenerate(){

Task task = new Task() {

@Override
public Boolean call() throws Exception {
main.getActionsBeforeGenerate().forEach(action -> action.run());
....
generateWordDocument();
....
return Boolean.TRUE;
}
};

Thread thread = new Thread(task);
thread.setDaemon(true);
thread.start();
}
Теперь у меня есть новые значения textField, доступные в методеgenerateWordDocument()
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»