Вниз  JavaFX
- 9.11.2015 / 16:42
Freddy
  Пользователь

Freddy 
Сейчас: Offline
M_N, https://docs.oracle.com/javafx...#resource_resolution секции resource resolution, variable resolution, expression binding читай.
- 9.11.2015 / 17:15
M_N
  Пользователь

M_N 
Сейчас: Offline
Freddy, спасибо :gg:
- 9.11.2015 / 17:53
M_N
  Пользователь

M_N 
Сейчас: Offline
Но все равно ничего не работает и не понятно. В поиске ничего внятного нет.
- 9.11.2015 / 17:56
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
M_N, написано же по ссылке в первом абзаце,
  1. <Label text="%myText"/>
А в ресурсах
  1. myText = This is the text!

Можешь посмотреть в исходниках какого-нибудь NoticEditor'а.

Изменено mrEDitor (9.11 / 17:57) (всего 1 раз)
- 9.11.2015 / 17:59
M_N
  Пользователь

M_N 
Сейчас: Offline
mrEDitor, я читал, это все понятно. Где эти ресурсы находятся :?
- 9.11.2015 / 18:03
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
M_N,
  1. FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/Main.fxml"),
  2.                     ResourceBundle.getBundle("resources.i18n.Language", Locale.getDefault()));
Например, тут они в пакете "resources.i18n".
- 9.11.2015 / 19:55
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
А свои компоненты можно создавать? Свои html-теги, грубо говоря.
- 9.11.2015 / 21:26
M_N
  Пользователь

M_N 
Сейчас: Offline
Проковырялся с тем, как работает этот ResourceBundle. Не понял нифига.
- 9.11.2015 / 21:35
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
Ксакеп, можно, наследуешься от уже существующего класса, импортиуешь свой класс в fxml'е, профит.
- 9.11.2015 / 23:26
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Цитата M_N:
Как сделать так, чтобы значение надписи было из переменной, а не прописано в XML-файле?

Тут надо понимать, что из себя представляет FXML и какова его роль.
FXML - лишь описание того, какие компоненты интерфейса будут в нашем окне, какие они имеют параметры и как они будут взаимодействовать.

Вот ты пишешь
  1. <Button text="Нажми!">

При загрузке
  1. FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/Main.fxml"),
  2.         ResourceBundle.getBundle("resources.i18n.Language", Locale.getDefault()));
парсится fxml файл, создаются компоненты (в данном случае Button), заполняются данными (text = "Нажми!") и добавляются в контейнер, сцену.

После этого, понятия fxml больше нет. Теперь мы работаем с компонентами в памяти.

У каждого компонента есть свойства. Например text, ширина, цвет фона и т.д. Чтобы "значение надписи было из переменной", нужно изменить свойство. button.setText("Привет, Коля!").

Вопрос в том, что нам нужно получить переменную button, чтобы управлять ею.

Вариант #1. С контроллером
Вариант #2. С поиском (lookup)

Есть ещё биндинги, которые автоматически изменяют свойства компонентов при изменении "переменных", но ты пока это перевари, позже к ним вернёмся. :)
__________________
 let live

Изменено aNNiMON (9.11 / 23:35) (всего 4 раза)
Наверх  Всего сообщений: 143
Фильтровать сообщения
Поиск по теме
Файлы топика (3)