Как организовать переключение сцен - PullRequest
0 голосов
/ 15 апреля 2020

Мне весело делать проект в java, и я хотел знать, как правильно организовать свой код и, более конкретно, как изменить сцену, сохраняя при этом некоторые общие характеристики.

Позвольте мне объяснить,

В моем основном классе у меня есть этот код:

public class Main extends Application {

private double xOffset, yOffset = 0.0;

@Override
public void start(Stage stage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("login/sign_in.fxml"));
    stage.initStyle(StageStyle.UNDECORATED);

    // Drag and Drop mechanism for the window
    root.setOnMousePressed(mouseEvent -> {
        xOffset = mouseEvent.getSceneX();
        yOffset = mouseEvent.getSceneY();
    });

    root.setOnMouseDragged(mouseEvent -> {
        stage.setX(mouseEvent.getScreenX() - xOffset);
        stage.setY(mouseEvent.getScreenY() - yOffset);
    });

    Scene scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
    // Set default focus to None
    root.requestFocus();
}


public static void main(String[] args) {
    launch(args);
}

}

Итак, я загружаю .f xml, и у меня также есть система, которая позволяет мне переместите мое окно, потому что оно UNDECORATED .

У меня также есть файл SignInController, который точно предназначен для изменения сцены, когда пользователь нажимает кнопку входа в систему:

    private void success() {
         // Delete the former window
         Stage stage = (Stage) parentContainer.getScene().getWindow();
         stage.close();

         // Load the new one
         try {
             Scene scene = new Scene(FXMLLoader.load(getClass().getResource("../main/main.fxml")));
             stage.setScene(scene);
             stage.show();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }

Это моя программа: enter image description here

Основной класс загружает первую сцену (sign_in.f xml) и этот файл, когда я нажимаю на кнопку , метод в SignInController вызывается для загрузки новой сцены (main.f xml).

Однако, когда моя новая сцена запускается, у меня больше не будет поведения вручную перемещать окно, и так как моя программа часто приводит меня к изменению сцены, я хотел бы, чтобы ваш совет сделал уверен, что поведение хорошо работает во всех моих сценах.

...