Мне весело делать проект в 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();
}
}
Это моя программа:
Основной класс загружает первую сцену (sign_in.f xml) и этот файл, когда я нажимаю на кнопку , метод в SignInController вызывается для загрузки новой сцены (main.f xml).
Однако, когда моя новая сцена запускается, у меня больше не будет поведения вручную перемещать окно, и так как моя программа часто приводит меня к изменению сцены, я хотел бы, чтобы ваш совет сделал уверен, что поведение хорошо работает во всех моих сценах.