JavaFX StringConverter不适用于组合框
我试图在JavaFX中的表中创建一个组合框表单元格。我使用了一个字符串转换器,使得false在表中显示“No”,true在表中显示“Yes”,这是可行的。但是,当我单击单元格进行编辑时,组合框仍然显示“false”和“true”,如下所示: 我正在设置我的表格单元格,如下所示:JavaFX StringConverter不适用于组合框,java,combobox,javafx-2,Java,Combobox,Javafx 2,我试图在JavaFX中的表中创建一个组合框表单元格。我使用了一个字符串转换器,使得false在表中显示“No”,true在表中显示“Yes”,这是可行的。但是,当我单击单元格进行编辑时,组合框仍然显示“false”和“true”,如下所示: 我正在设置我的表格单元格,如下所示: colPossibleDischarge.setCellValueFactory(new PropertyValueFactory<RoomProperty, Boolean>("discharge"));
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");
}
}
colPossibleDischarge.setCellValueFactory(新属性值工厂(“解除”);
colPossibleDischarge.setCellFactory(新回调(){
@凌驾
公共TableCell调用(TableColumn roomPropertyBooleanTableColumn){
返回新的ComboBoxTableCell(新的YesNoStringConverter(),true,false);
}
});
我的字符串转换器如下所示:
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");
}
}
公共类YesNoStringConverter扩展StringConverter{
@凌驾
公共字符串到字符串(布尔布尔布尔值){
返回(布尔?“是”:“否”);
}
@凌驾
公共布尔fromString(字符串s){
返回s.equalsIgnoreCase(“是”);
}
}
我做错了什么
我做错了什么
没什么
这是一个,;它在JavaFX8中是固定的。
如果您现在被锁定在JavaFX2.2(JDK7)中,那么解决方法将是滚动您自己的自定义单元格,这有点乏味,但也不太糟糕
此外,我认为在这种情况下,我会考虑使用CabrBox TabeLeCLE,这是一个比组合框更好的用户体验。