我正在尝试在JavaFX中的表中创建一个组合框表格单元格。我使用了一个字符串转换器,以便false显示“No”并且true在表中显示“Yes”,这是有效的。但是,当我单击单元格进行编辑时,组合框仍显示“false”和“true”,如下所示:
我正在设置我的表格单元格:
colPossibleDischarge.setCellValueFactory(new PropertyValueFactory<RoomProperty, Boolean>("discharge"));
colPossibleDischarge.setCellFactory(new Callback<TableColumn<RoomProperty, Boolean>, TableCell<RoomProperty, Boolean>>() {
@Override
public TableCell<RoomProperty, Boolean> call(TableColumn<RoomProperty, Boolean> roomPropertyBooleanTableColumn) {
return new ComboBoxTableCell<RoomProperty, Boolean>(new YesNoStringConverter(),true,false);
}
});
我的字符串转换器如下所示:
public class YesNoStringConverter extends StringConverter<Boolean> {
@Override
public String toString(Boolean bool) {
return (bool?"Yes":"No");
}
@Override
public Boolean fromString(String s) {
return s.equalsIgnoreCase("yes");
}
}
我做错了什么?
答案 0 :(得分:1)
我做错了什么?
没什么......
这是known bug;它在JavaFX 8中得到修复。 如果你现在被锁定在JavaFX 2.2(JDK 7)中,解决方法是滚动你自己的自定义单元格,这有点单调乏味但不是太糟糕。
此外,我认为在这个确切的场景中我会考虑使用CheckBoxTableCell,这对于是/否选择而言比组合框更好。