Использование класса Callback - Java

Узнай цену своей работы

Формулировка задачи:

Если кто-то сталкивался с подобным, помогите пожалуйста.

Задача: Отобразить все наименования класса "Role" из коллекции в виде выпадающего списка (а-ля ComboBox) строке таблицы TableView. Вот что должно получится (но не получается, сделано аферистским путем): Вот код, который не работает как надо:
Листинг программы
  1. ...
  2. TableColumn functionColumn = new TableColumn<>("Function"); //Колонка таблицы, помещается в TableView
  3. ---
  4. functionColumn.setCellValueFactory(new PropertyValueFactory<>("level")); //Загружаем в нее данные через фабрику
  5. ---
  6. functionColumn.setCellFactory(new Callback<TableColumn<Role, Role>, TableCell<Role, Role>>(){
  7. @Override
  8. public TableCell<Role, Role> call(TableColumn<Role, Role> param) {
  9. return new TableCell<Role, Role>(){
  10. @Override
  11. public void updateItem(Role r, boolean empty){
  12. super.updateItem(r, empty);
  13. if (empty){
  14. setText(null);
  15. }else{
  16. //setGraphic(null);
  17. setText(r.getName());
  18. }
  19. }
  20. };
  21. }
  22. });
  23. ...
Класс, из которого пытаюсь выжать name:
Листинг программы
  1. public class Role {
  2. private int idRole;
  3. private StringProperty name = new SimpleStringProperty();
  4. private String description;
  5.  
  6. public Role(){
  7. }
  8.  
  9. public int getIdRole() {
  10. return idRole;
  11. }
  12. public void setIdRole(int idRole) {
  13. this.idRole = idRole;
  14. }
  15. public String getName() {
  16. return name.get();
  17. }
  18. public void setName(String name) {
  19. this.name.set(name);
  20. }
  21. public String getDescription() {
  22. return description;
  23. }
  24. public void setDescription(String description) {
  25. this.description = description;
  26. }
  27. }
В официальной документации очень скупо написано и практически нет примеров на эту тему. _____ P.S. Дабы не городить свалку, бОльшая часть кода не показана.

Решение задачи: «Использование класса Callback»

textual
Листинг программы
  1. private final ObservableList<Role> functions
  2.             = FXCollections.observableArrayList(
  3.                     new Role("ADMINISTRATOR"),
  4.                     new Role("MAIN_OPERATOR",),
  5.                     new Role("OPERATOR"),
  6.                     new Role("CUSTOMER")
  7.                     new Role("PROVIDER")      );
  8.  
  9.  private final ObservableList<Person> data
  10.             = FXCollections.observableArrayList(
  11.                     new Person("name1", functions.get(0),
  12.                     new Person("name2", functions.get(1),
  13.                     new Person("name3", functions.get(2),
  14.                     new Person("name4", functions.get(3)));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут