Правильное использование JavaFX setUserData?

Я заметил setUserData метод, который появляется почти на всех объектах JavaFX, и мне было интересно, есть ли конкретные применения для этого, которые считаются лучшей практикой кодирования, чем другие. (Или если есть, по крайней мере, использование, которое будет считаться неправильным.)

на Java API описание:

удобный метод для установки одного свойства объекта, которое может быть получено позже.

этот метод действительно только для удобное прикрепление всего, что ваше сердце желает к объектам JavaFX? Я мог видеть его полезность в тегировании / маркировке объектов, но имеет ли он какие-либо другие стандартные применения?

1 ответов


Userdata обычно используется, когда элементы управления можно переключать между выбранным и не выбранным состояниями.

такие элементы управления включают

  • переключатели
  • ToggleButton
  • RadioMenuItem

для одиночного выбора нам нужно назначить эти объекты togglegroups. Поскольку мы не можем получить прямой доступ к объектам элементов управления из группы переключателей, мы назначаем эти элементы управления с userdata, доступ к которому можно получить из the Toggle используя getUserData метод.

давайте рассмотрим сценарий, где мы должны RadioButtons для пола. Требование состоит в том, чтобы показать

Male
Female

однако, данные, которые должны быть переданы, должны быть

M
F

при таком сценарии, вы можете использовать что-то вроде

final ToggleGroup group = new ToggleGroup();

RadioButton male = new RadioButton("Male");
male.setToggleGroup(group);
male.setUserData("M");

RadioButton female = new RadioButton("Female");
female.setToggleGroup(group);
female.setUserData("F");

group.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
  public void changed(ObservableValue<? extends Toggle> ov,
      Toggle old_toggle, Toggle new_toggle) {
    if (group.getSelectedToggle() != null) {
      System.out.println(group.getSelectedToggle().getUserData().toString());
    }
  }
});