2014-10-03 4 views
0

Я хочу настроить несколько элементов ui на основе информации о системе во время запуска приложения (т. Е. Это информация неизвестна априори, чтобы статически установить ее в файле css или fxml). Является ли конструктор контроллера лучшим местом для этого? Первым соображением было сделать это в методах start() или init() основного класса, который расширяет приложение, но похоже, что настройка скорее препятствует программисту легко получить доступ к элементам ui вплоть до иерархии узлов. (что, с другой стороны, очень просто в соответствующем контроллере через инъекцию @FXML)Лучший способ инициализировать графический интерфейс в JavaFX?

ответ

0

Это зависит от того, какую работу вам нужно выполнить. Если вам нужно что-то, что зависит от этапа вашего приложения, выполните его в методе start. Если нет, то это может быть выполнено в конструкторах, init или методах запуска. Имейте в виду, что механизм запуска ожидает, что подклассы приложений предоставят конструктор no-arg, поэтому, если вы включите в него логику запуска, то избегайте использования параметров конструктора.

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

Если вам нужна ссылка на сцену с контроллера, вы можете найти много таких решений для передачи ссылки на контроллер здесь, на SO, например, сделать ссылку на сцену общедоступной и статической в ​​вашем классе приложения или иметь такое поле в вашем контроллере, которое может быть установлено из метода запуска вашего приложения.

Смежные вопросы