JavaFX StringConverter不适用于组合框

时间:2014-02-04 16:28:49

标签: java combobox javafx-2

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

screen shot of incorrect behavior

我正在设置我的表格单元格:

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");
    }
}

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

我做错了什么?

没什么......

这是known bug;它在JavaFX 8中得到修复。 如果你现在被锁定在JavaFX 2.2(JDK 7)中,解决方法是滚动你自己的自定义单元格,这有点单调乏味但不是太糟糕。

此外,我认为在这个确切的场景中我会考虑使用CheckBoxTableCell,这对于是/否选择而言比组合框更好。