我在javafx中实现了一个程序,它动态生成一个输入掩码,并在按下该掩码后生成一个Word文档。
我在db-table中定义了哪个输入字段在此掩码中可用。 现在我添加了对我的程序的特定状态执行的自定义过程的支持(onFocusLost of a field,onChange,...) 这很完美。
现在我被困在onGenerate执行中。
当我渲染蒙版时,我拿着一个Runnable
列表来存储我应该在生成时执行的动作(在渲染时我知道应该执行哪个动作。在生成时我必须再次读取所有数据。所以我认为我用FunctionalInterface
保存了动作。我不需要inputParameter而且没有ReturnValue ......所以我最终得到Runnable
)
TextField tf = ...;
String s = ...;
actionsBeforeGenerate.add(() -> {
tf.setText(s);
});
现在,如果我按下生成按钮,我会执行以下操作:
private void startGenerate(){
//main.getActionsBeforeGenerate() == List<Runnable>
main.getActionsBeforeGenerate().forEach(action -> action.run());
generateWordDocument();
}
文本在文档生成后正确设置为节点。
如何在我的generationLogic启动之前更改textField?
如果您需要更多信息,请不要犹豫。
修改
我想我找到了解决问题的方法:
private void startGenerate(){
Task<Boolean> task = new Task<Boolean>() {
@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();
}
现在我在generateWordDocument()