Редактируемый комбинированный список JavaFx: отображение toString при выборе элемента
у меня естьComboBox
типаPerson
, в котором я добавил несколько объектовPerson
учебный класс,
я использовалsetCellFactory(Callback)
способ показать имя человека в раскрывающемся списке ComboBox
combobox.setCellFactory(
new Callback() {
@Override
public ListCell call(ListView p) {
ListCell cell = new ListCell() {
@Override
protected void updateItem(Person item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText("");
} else {
setText(item.getName());
}
}
};
return cell;
}
});
А также,setButtonCell(ListCell)
способ показать имя вcombobox
на выбор.
combobox.setButtonCell(
new ListCell() {
@Override
protected void updateItem(Person t, boolean bln) {
super.updateItem(t, bln);
if (bln) {
setText("");
} else {
setText(t.getName());
}
}
});
Это прекрасно работает с обычным случаем, но когда я использую редактируемый комбинированный список, это не получается.
Когда я пишу,combobox.setEditable(true);
затем при выборе элемента отображается текстовое поле (редактор) в выпадающем списке.toString()
метод класса человека.
Нормальный случай:
Редактируемый кейс:
Есть ли решение для этого?
У меня есть модельный класс,
public class Person {
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" + "name=" + name + ", age=" + age + '}';
}
}