【发布时间】:2013-10-15 02:00:18
【问题描述】:
我有一个ComboBox<Person>,类型为Person,我在其中添加了几个Person 类的对象。
我使用setCellFactory(Callback) 方法在ComboBox 下拉列表中显示Person 名称
combobox.setCellFactory(
new Callback<ListView<Person >, ListCell<Person >>() {
@Override
public ListCell<Person > call(ListView<Person > p) {
ListCell cell = new ListCell<Person >() {
@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<Object>() {
@Override
protected void updateItem(Person t, boolean bln) {
super.updateItem(t, bln);
if (bln) {
setText("");
} else {
setText(t.getName());
}
}
});
这在正常情况下非常有效,但是当我使用可编辑的 combobox 时,这会失败。
当我写时,combobox.setEditable(true); 然后在项目选择时combobox 的文本字段(编辑器)显示Person 类的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 + '}';
}
}
【问题讨论】:
标签: combobox javafx-2 javafx javafx-8