Как сделать загрузочную сцену до того, как она подключится к базе данных MySQL? - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь сделать окно загрузки.Но у меня проблема с драйвером MySQL.Это проблема, когда я добавляю некоторый объект, в моем случае GIF (но я пробовал также прямоугольник), в мою сцену (в группу), а затем он подключается к базе данных, stage не отображает никаких объектов, пока соединение с базой данных не будет установлено.

Я попробовал несколько примеров, которые я нашел в Интернете, но ничего не работает.Так что я нахожу здесь помощь.Вот код, который я попробовал.

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();
}

1 Ответ

0 голосов
/ 24 марта 2019

Это довольно просто!Вы можете сделать некоторые «предварительные» шаги с переопределением метода инициализации.

class YourControllerClass implements Initializable{
    @Override
    public void initialize(URL location, ResourceBundle resources) {
        //Do stuff
    }
}

Также вы можете запустить в методе инициализации новый поток, как это, чтобы предотвратить блокирование вашего приложения.

new Thread(() -> {
    //Your stuff
}).run();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...