我正在构建一个javafx应用程序,因为我需要用户从对话框输入,我的主线程应暂时停止并且只有在我收到输入后才开始。 为此,我遵循两种方法第一个是开始一个新线程并加入主线程到它我的代码就像: -
select [a]FROM[tble] ...
select 'got data from unit #' | unit from tbl ...
这里的问题是它总是在主线程继续运行的某些时候表现不正常。
在第二种方法中,我使用了javafx future task class: -
Task<Void> passwordBox = new Task<Void>() {
@Override
protected Void call() throws Exception {
Platform.runLater(new Runnable() {
@Override
public void run() {
TextInputDialog dialog = new TextInputDialog(null);
dialog.setTitle("System password required");
dialog.setHeaderText(null);
dialog.setContentText(null);
Optional<String> result = dialog.showAndWait();
if (result.isPresent()) {
password = result.get();
System.out.println("Your name: " + result.get());
}
}
});
return null;
}
};
Thread pt = new Thread(passwordBox);
pt.start();
pt.join
}
但是这里应用程序停止并且对话永远不会出现,点击应用程序时它会崩溃。