Я работаю над приложением карты в JavaFX. Идея состоит в том, что пользователь должен иметь возможность обновлять информацию о местах на карте. Карта представляет собой статическое изображение с невидимыми панелями, расположенными над ним. У меня есть кнопка в форме, которая откроет представление карты как модальную с выделенными выделенными областями. Когда я выбираю область, идентификатор этой области хранится в другом классе для доступа, а модальный закрывается, но мне действительно хотелось бы вернуть значение в контроллер формы и вызвать событие для изменения метки на форме.Получить значения из модального JavaFX
вызова метода для отображения карты (содержащийся внутри контроллера формы):
@FXML
private void selectArea()
{
Main.viewLoader.displayRootSelection();
}
Мой вид погрузчик:
public void displayRootSelection(){
Stage window = new Stage();
currentWindow = window;
Main.setRootInSelection(true);
try {
BorderPane root = FXMLLoader.load(getClass().getResource("../views/root/Root.fxml"));
window.setResizable(false);
window.initModality(Modality.APPLICATION_MODAL);
window.setTitle("WIT Map");
Scene scene = new Scene(root, 1000, 600);
Main.setScene(scene);
window.setScene(scene);
window.showAndWait();
} catch (IOException e) {
e.printStackTrace();
}
}
И обработчик события на панели на карте:
@FXML
private void panelClicked(Event e)
{
if (Main.isRootInSelection()){
String tempId = AreaManagement.findArea((Node)e.getSource());
AreaManagement.setTempAreaId(tempId);
viewLoader.getCurrentWindow().close();
}
System.out.println(AreaManagement.findArea((Node) e.getSource()));
}
То, что я пытаюсь сделать, это получить tempId из обработчика событий в контроллере для сопоставить с контроллером формы, а также вызвать событие в форме. Любая помощь будет оценена по достоинству.
Это почти то, что мне нужно, за исключением того, что я все еще не могу понять, как вызвать событие на моем контроллере, поскольку я не могу использовать статические элементы или методы внутри контроллера. То, что мне действительно нужно сделать, это вызвать статический метод на моем контроллере изнутри ViewLoader, который изменит статическую метку, введенную из FXML. – JavaTheNutt
А, я вижу. См. Мой отредактированный ответ, который должен дать вам то, что вам нужно. Если вы настаиваете на использовании другого подхода, кому-то придется вторгаться - это самый простой способ, о котором я могу думать. – founderio