Использование класса 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());
}
}
};
}
});
...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;
}
}Решение задачи: «Использование класса 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)));