javafx: пользовательский TableColumn
Я хочу сделать заказ TableColumn
что, когда в редактируемом состоянии его ячейки будут автоматически заполнены TextField
s, вот что я попробовал:
public static <T,S> void setAutoCompleteTableColumn(TableColumn<T,S> column, List items){
column.setCellFactory(param -> {
return new TableCell<T, S>(){
final TextField textField = new TextField();
@Override
protected void updateItem(S item, boolean empty) {
super.updateItem(item, empty);
if(item == null){
setGraphic(null);
}else {
setGraphic(textField);
AutoCompletionBinding<T> binding = TextFields.bindAutoCompletion(textField,items);
binding.setOnAutoCompleted(event ->{
//handleCompleted.accept(event.getCompletion());
});
}
}
};
});
}
Этот код произвел (очевидно) это:
Но я хочу эту форму только тогда, когда TableView находится в режиме редактирования, поэтому я сделал это вместо этого:
public static <T,S> void setAutoCompleteTableColumn(TableColumn<T,S> column, List items){
column.setCellFactory(param -> {
return new TableCell<T, S>(){
final TextField textField = new TextField();
@Override
protected void updateItem(S item, boolean empty) {
super.updateItem(item, empty);
if(item == null){
setGraphic(null);
}else {
editableProperty().addListener((obs, oldValue, newValue)->{
if(newValue){
setGraphic(textField);
}else{
setText(item.toString());
}
});
AutoCompletionBinding<T> binding = TextFields.bindAutoCompletion(textField,items);
binding.setOnAutoCompleted(event ->{
//handleCompleted.accept(event.getCompletion());
});
}
}
};
});
}
Как вы можете видеть, я добавил слушателя editableProperty
, что ни к чему не привело. То, что я хочу, это редактируемый TableColumn, как здесь, но с автоматическим завершением TextField
, Есть идеи, как этого добиться?