#java #user-interface #javafx #fxml #scene
#java #пользовательский интерфейс #javafx #fxml #сцена
Вопрос:
В конкретной сцене я хочу спросить, была ли предыдущая сцена X или Y. В зависимости от результата я хочу загрузить либо X.fxml, либо Y.fxml после нажатия кнопки.
Я пытался наследовать мой MainViewController одним методом, но у меня это не получилось. Мой текущий подход просто запрашивает источник (button) и в зависимости от кнопки загружает определенный fxml.
public class FinishViewController extends MainViewController {
public void returnFinishHandler(ActionEvent event) throws IOException {
if (event.getSource() == returnToConfigButton) {
stage = (Stage) returnToConfigButton.getScene().getWindow();
root = FXMLLoader.load(getClass().getResource("/view/configurationViewKds.fxml"));
} else {
stage = (Stage) finishButton.getScene().getWindow();
root = FXMLLoader.load(getClass().getResource("/view/updateView.fxml"));
}
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
В методе я надеюсь запросить предыдущую сцену и действовать в соответствии с результатом, как я описал ранее.
В лучшем случае я получаю какую-то новую перспективу для нового подхода.
Мы ценим вашу помощь.
Комментарии:
1. Почему бы не установить для одного обработчика событий значение
finishButton
, а для другого —returnToConfigButton
?
Ответ №1:
Вы можете использовать перечисление, которое хранит состояние вашего приложения. Допустим, у вас есть класс с именем, AppManager
и внутри него вы создали общедоступное статическое перечисление ApplicationState
. Затем внутри вашего finishHandler
вы добавляете дополнительный оператор if для проверки текущего состояния приложения из вашего менеджера приложений.