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

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

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

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

Задача: Отобразить все наименования класса "Role" из коллекции в виде выпадающего списка (а-ля ComboBox) строке таблицы TableView. Вот что должно получится (но не получается, сделано аферистским путем): Вот код, который не работает как надо:
...
 
TableColumn functionColumn = new TableColumn<>("Function");  //Колонка таблицы, помещается в TableView
 
---
 
functionColumn.setCellValueFactory(new PropertyValueFactory<>("level")); //Загружаем в нее данные через фабрику
 
---
 
functionColumn.setCellFactory(new Callback<TableColumn<Role, Role>, TableCell<Role, Role>>(){
            @Override
            public TableCell<Role, Role> call(TableColumn<Role, Role> param) {
                
                return new TableCell<Role, Role>(){
                    @Override
                    public void updateItem(Role r, boolean empty){
                        super.updateItem(r, empty);
                        if (empty){
                            setText(null);
                        }else{
                            //setGraphic(null);
                            setText(r.getName());
                        }
                    }
                };
            }
            
        });
 
...
Класс, из которого пытаюсь выжать name:
public class Role {
    
    private int idRole;
    private StringProperty name = new SimpleStringProperty();
    private String description;

    public Role(){
        
    }

    public int getIdRole() {
        return idRole;
    }
 
    public void setIdRole(int idRole) {
        this.idRole = idRole;
    }
 
    public String getName() {
        return name.get();
    }
 
    public void setName(String name) {
        this.name.set(name);
    }
 
    public String getDescription() {
        return description;
    }
 
    public void setDescription(String description) {
        this.description = description;
    }    
}
В официальной документации очень скупо написано и практически нет примеров на эту тему. _____ P.S. Дабы не городить свалку, бОльшая часть кода не показана.

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

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

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


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

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

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