我在为我的程序添加启动画面时遇到了同样的问题。这是我的代码:
CircleTest pForm = new CircleTest();
Task<Void> task = new Task<Void>() {
@Override
public Void call() {
try {
FXMLLoader loader = new FXMLLoader(
Main.class.getResource("/newRegistration/HomePage.fxml"));
AnchorPane page = (AnchorPane) loader
.load();
dialogStagee.getIcons().add(new Image("/piks/showthumb.png"));
dialogStagee.setTitle("WALGOTECH SOLUTIONS: 0703445354");
dialogStagee.initModality(Modality.APPLICATION_MODAL);
Scene scene = new Scene(page);
dialogStagee.setScene(scene);
HomePageController controller = loader.getController();
controller.setDialogStage(dialogStagee);
dialogStagee.setMaximized(true);
dialogStagee.initStyle(StageStyle.UNDECORATED);
conn.prepareStatement(
"INSERT INTO `logs`(`date`,`user`,`Terminal`,`Action`)"
+ " VALUES ('"
+ (java.time.LocalDate.now()
+ " "
+ java.time.LocalTime.now().getHour()
+ ":"
+ java.time.LocalTime.now().getMinute()
+ ":" + java.time.LocalTime.now().getSecond())
+ "',"
+ "'"
+ DbConnector.getMyVariablepatientvameloginCategory()
.split("as")[1]
+ "',"
+ "'"
+ StartPageController.hostname
+ "',"
+ " 'Logged in into Registration')")
.execute();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
};
pForm.activateProgressBar(task);
task.setOnSucceeded(event -> {
dialogStagee.show();
try {
} catch (Exception e) {
}
pForm.getDialogStage().close();
});
pForm.getDialogStage().show();
dialogStage.close();
Thread thread = new Thread(task);
thread.start();
运行代码时出现“未在fx应用程序上”的错误。通过在任务中添加Platform.runLater()解决了这个问题。
现在,这是我当前的代码:
CircleTest pForm = new CircleTest();
Task<Void> task = new Task<Void>() {
@Override
public Void call() {
Platform.runLater(new Runnable() {
@Override
public void run() {
try {
FXMLLoader loader = new FXMLLoader(
Main.class
.getResource("/newRegistration/HomePage.fxml"));
AnchorPane page = (AnchorPane) loader
.load();
dialogStagee.getIcons().add(
new Image("/piks/showthumb.png"));
dialogStagee
.setTitle("WALGOTECH SOLUTIONS: 0703445354");
dialogStagee
.initModality(Modality.APPLICATION_MODAL);
Scene scene = new Scene(page);
dialogStagee.setScene(scene);
HomePageController controller = loader
.getController();
controller.setDialogStage(dialogStagee);
dialogStagee.setMaximized(true);
dialogStagee.initStyle(StageStyle.UNDECORATED);
conn.prepareStatement(
"INSERT INTO `logs`(`date`,`user`,`Terminal`,`Action`)"
+ " VALUES ('"
+ (java.time.LocalDate.now()
+ " "
+ java.time.LocalTime.now().getHour()
+ ":"
+ java.time.LocalTime.now().getMinute()
+ ":" + java.time.LocalTime.now().getSecond())
+ "',"
+ "'"
+ DbConnector.getMyVariablepatientvameloginCategory()
.split("as")[1]
+ "',"
+ "'"
+ StartPageController.hostname
+ "',"
+ " 'Logged in into Registration')")
.execute();
} catch (Exception e) {
e.printStackTrace();
}
}
});
return null;
}
};
pForm.activateProgressBar(task);
task.setOnSucceeded(event -> {
dialogStagee.show();
try {
} catch (Exception e) {
}
pForm.getDialogStage().close();
});
pForm.getDialogStage().show();
dialogStage.close();
Thread thread = new Thread(task);
thread.start();
我希望这可以帮助你解决问题。加油!