Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaFX
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/22: Рейтинг темы: голосов - 22, средняя оценка - 4.50
Prorok89
1 / 1 / 0
Регистрация: 28.11.2015
Сообщений: 4
1

Получение доступа к элементам Controller в JavaFX из другого класса

28.11.2015, 01:35. Просмотров 4113. Ответов 6

Доброго время суток!
Проблема заключается в следующем, при попытки создать экземпляр класса Controller и обратится к элементам @FXML из другого класса выдает ошибку: "Caused by: java.lang.NullPointerException"
Поиск на просторах интернета не дает четкого руководства, что делать когда нужно обратиться к элементам JavaFX. Уважаемы гуру, прошу пошагового объяснения.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2015, 01:35
Ответы с готовыми решениями:

Изменение компонента из другого класса JavaFx
есть панель с кнопкой, из другого класса задаю кнопке другой текст класс...

JavaFX: Получить объект с Controller
NetBeans сгенерил проект: есть SampleController.java Sample.fxml и "мой...

Доступ к FXML элементам и Controller
Доброго времени суток, господа программисты! Имеется следующий FXML-код. Не...

Хочу написать приложение на JavaFX, с использованием контроллера и событий. Куда делся controller?
Всем здрасьте. С Java только знакомлюсь. Хочу написать приложение на...

Не видит переменную внутри класса из другого класса
Созданы 2 класса внутри одного, 2-ой класс EHandler не видит переменные из...

6
][irurg
175 / 174 / 38
Регистрация: 16.06.2010
Сообщений: 511
29.11.2015, 12:56 2
JavaFX: Получить объект с Controller
0
Prorok89
1 / 1 / 0
Регистрация: 28.11.2015
Сообщений: 4
29.11.2015, 14:54  [ТС] 3
Цитата Сообщение от ][irurg Посмотреть сообщение
JavaFX: Получить объект с Controller
В приведенной ссылки, рассматривают добавление новых элементов на сцену, но не управление ими. Мне необходимо манипулировать уже созданными элементами @FXML которые уже проинициализированы в классе controller
0
][irurg
175 / 174 / 38
Регистрация: 16.06.2010
Сообщений: 511
29.11.2015, 19:06 4
Там описан процесс получения ссылки на контроллер, который тебе и нужен для управления контролами UI
Java
1
2
3
4
5
6
7
8
9
10
11
12
FXMLLoader loader = new FXMLLoader(getClass().getResource("view/MainStage.fxml"));
        
        try{            
            AnchorPane pane = (AnchorPane)loader.load();
            mainStageController = loader.getController();
            mainStageController.setStage(mainStage);
            Scene scene = new Scene(pane);
            primaryStage.setScene(scene);
            primaryStage.show();            
        } catch(Exception e){
            e.printStackTrace();
        }
0
Prorok89
1 / 1 / 0
Регистрация: 28.11.2015
Сообщений: 4
29.11.2015, 19:55  [ТС] 5
Хорошо, объясни пожалуйста каким образом мне это сделать!
Как мне получить например элемент из класса Controller:
Java
1
 @FXML private Button button;
И обратиться к нему не из класса main где создается сцена и отображается, а из любого который я создам.

P.S. Может я просто уже схожу сумаю
0
][irurg
175 / 174 / 38
Регистрация: 16.06.2010
Сообщений: 511
29.11.2015, 21:18 6
Пример
0
Вложения
Тип файла: zip JavaFXApplication1.zip (47.5 Кб, 61 просмотров)
Prorok89
1 / 1 / 0
Регистрация: 28.11.2015
Сообщений: 4
30.11.2015, 21:21  [ТС] 7
Бесспорно ваш код верен, но я просил
Цитата Сообщение от Prorok89 Посмотреть сообщение
И обратиться к нему не из класса main.
У вас он JavaFXApplication1
Решение проблемы как оказалось проще.
В классе, который создаем, мы пишем:
Java
1
 private Controller controller; // объявляем объект класса Controller, который создала нам IDE
Там же, как вариант, создаем конструктор этого класса, в который передаем сам Controller
Java
1
2
3
public  Sample(Controller controller){
        this.controller = controller;
    }
В классе Controller, созданным IDE, создаем
Java
1
2
3
4
5
6
7
8
9
10
@FXML Label label;
private Sample sample; // объект нашего класса
 
public Controller(){
   this.sample = new Sampe(this);  
}
 
public Label getLabel(){
    return label;
}
В нашем классе Sample, теперь можем обращаться к этому элементу label класса Controller через
Java
1
controller.getLabel().setText("Этот текст выведен из класса Sample, который создал Я!");
1
30.11.2015, 21:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2015, 21:21

Получение доступа к элементам формы с другого namespace
Как получить доступ к данным с другого namespace using abc; namespace...

Получение доступа к переменным класса из другого класса
Как передать по ссылке переменную из класса А в метод класса В?

Доступ к элементам и методам класса из другого класса
Пишу и понимаю, что создаю, наверняка, давно избитую тему, но вот уже второй...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru