【发布时间】:2019-03-24 20:31:24
【问题描述】:
我正在尝试制作一个加载窗口。但我对 MySQL 驱动程序有疑问。问题是,当我将一些对象(在我的情况下为 GIF(但我也尝试过矩形))添加到我的场景(到组)然后它连接到数据库时,舞台不会显示任何对象,直到数据库连接完成。
我尝试了一些在 Internet 上找到的示例,但没有任何效果。所以我在这里寻求帮助。这是我尝试过的代码。
private void afterClick() {
showLoading();
username = name.getText();
password = passField.getText();
if ((username.length() == 0) && (password.length() == 0)) {
Alert.printInformation("Nezadali jste přihlašovací údaje.");
} else if (username.length() == 0) {
Alert.printInformation("Nezadali jste login.");
} else if (password.length() == 0) {
Alert.printInformation("Nezadali jste heslo.");
} else {
DBConnection connection = new DBConnection();
if(connection.connect()){
if (check.isSelected()) {
FileStream.writeToFile("Account.txt", LoginMenu.username + ";" + LoginMenu.password, false);
} else {
FileStream.writeToFile("Account.txt", "empty", false);
}
App.showScene(MenuName.MainMenu);
}
}
}
void showLoading(){
ImageView loading = new ImageView(new Image("file:Wallpapers/loading.gif"));
loading.setX(App.width -100);
loading.setY(App.height - 100);
loading.setFitWidth(60);
loading.setFitHeight(60);
Stage stage = new Stage();
Group group = new Group();
Scene scene1 = new Scene(group);
group.getChildren().add(loading);
stage.setScene(scene1);
scene1.setFill(Color.TRANSPARENT);
stage.initStyle(StageStyle.TRANSPARENT);
stage.show();
}
【问题讨论】:
-
您绝不能在 JavaFX 应用程序线程 上阻塞或运行长时间运行的任务。当您这样做时,它会阻止线程执行任何其他导致冻结 GUI 的操作。您应该将繁重的工作转移到另一个线程——但请记住,您必须永远不要从后台线程修改 GUI。请参阅Concurrency in JavaFX 了解更多信息。
-
看看this是否有帮助。