@discodancer_dc
новичок в джава

Почему нельзя создавать экземпляр класса в initialize() другого класса?

Java FX. столкнулся с проблемой. Чтобы по нажатии кнопки одной сцены изменялось что-то в другой сцене нужно лезть в initialize() и создавать экз.класса, чтобы использовать его компоненты, из-за чего программа при нажатии на ту самую кнопку выдает ошибку и ничего не делает.

public void initialize()
    {
        SceneSecondary SS = new SceneSecondary();         //экземпляр другого класса, в котором кнопка
        SS.nextPageButton1.setOnAction(e -> {             //использую эту кнопку из другого класса
            characterList.getItems().add("test_item");    //не выходит
        });
    }


Что в таком случае делать? Это единственное решение и то у меня не работает!
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
initialize не для этих целей предназначен. Для начала почитайте как устроена JavaFX, удивитесь но уведите новое слово MVC.
Когда придет понимание,устройства то поймете что как минимум нужно разделить хотябы на 2 части каждую форму, конкретно на model и ( комбинированный view и controller). В этом случае у вас Модель будет хранить данные, их состояние и оперировать ими. Комбинированный View\Controller будет содержать саму форму(View) и контроллер(Controller) прослойка соединяющая model с view. и привязывающая события(кнопку нажали или данные изменились) в обе стороны.

Конкретно приведенный вами код это чепуха и работать она не будет. У вас уже Существует текущая сцена и предполагаю SceneSecondary , а вы создаете еще один SceneSecondary который никак не связан с первым т.к. это абсолютно разные сцены.

Ну и перед тем как писать с возмущениями что это единственное решение (опять откуда то лично вами надуманное) можете сами себе ответить что делать, читайте азы и вопросы сами собой отпадут и времени потратите гораздо меньше чем гугление непонятного и написание непонятного и глупого вопроса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы