Не могу получить Scene в initialize JavaFx

136
12 июля 2022, 09:00

Не понимаю как получить Scene, для того, чтобы получить действие клавиатуры

@FXML
private Label countLives;
@FXML
private Circle enemyCircle;
@FXML
private Circle myCircle;
@FXML
void initialize() {
    countLives.getScene().setOnKeyPressed(key -> {
        switch (key.getCode()) {
            case W:
                myCircle.setCenterX(myCircle.getCenterX() + 1);
        }
    });
}

Здесь countLives.getScene() выдает Null, но вот с кнопкой работает иначе, почему-то после нажатия у нее появляется Scene

void initialize(){
        labelNick.setText(client.getName());
        countReady.setText("1/10");
        System.out.println(buttonReady.getScene());
        buttonReady.setOnAction(event -> {
            buttonReady.getScene().getWindow().hide();
        }

Как в этом примере. В общем вопрос заключается в том, как мне получить в контроллере Scene?

Answer 1

null выводится потому что на момент инициализации контроллера сцена еще не существует (в главном классе сначала загружается fxml, в этот же момент инициализируется контроллер, а потом уже создается объект сцены). В момент нажатия на кнопку же окно уже полностью инициализировано, поэтому объект сцены доступен.

Можно повесить listener на sceneProperty, при его изменении выполнять нужные вам действия со сценой:

countReady.sceneProperty().addListener(((observable, oldValue, newValue) -> {
    if (newValue != null) {
        // 
    }
}));
READ ALSO
Как использовать Sqlite в AsyncTask классе

Как использовать Sqlite в AsyncTask классе

В чатсности я хотел бы использовать insert в фоновом режиме то есть:

158
Вывод свойств объекта на экран

Вывод свойств объекта на экран

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

140
Как разобраться с папками в web приложении Java SpringBoot

Как разобраться с папками в web приложении Java SpringBoot

Помогите разобраться с папками в web приложении на SpringBoot, thymeleaf Сколько видео не смотрел на эту тему, каждый создает свою структуру папок, при...

234
Как сменить каталог templates в Thymeleaf?

Как сменить каталог templates в Thymeleaf?

Операционка WindowsВ приложении структура каталогов:

138