关于 java:JavaFX StringConverter 不适用于组合框

JavaFX StringConverter not applying to combo box

我正在尝试在 JavaFX 的表格中创建一个组合框表格单元格。我使用了一个字符串转换器,以便 false 显示 "No" 和 true 显示 "Yes" 在表中,这是工作。但是,当我单击单元格进行编辑时,组合框仍然显示"false"和"true",如下所示:

screen

我正在像这样设置我的表格单元格:

1
2
3
4
5
6
7
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);
    }
});

我的字符串转换器看起来像这样:

1
2
3
4
5
6
7
8
9
10
11
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");
    }
}

我做错了什么?


What am I doing wrong?

什么都没有……

这是一个已知的错误;它已在 JavaFX 8 中修复。
如果您现在被锁定在 JavaFX 2.2 (JDK 7) 中,解决方法是滚动您自己的自定义单元格,这有点乏味但还不错。

不过,不过,我认为在这个确切的场景中,我会考虑使用 CheckBoxTableCell,对于"是/否"选项来说,这比组合框的用户体验更好。