设置setCellFactory
列时遇到问题。
我的代码如下所示:
@FXML
private void EditStudentMarkAction(Integer idUser){
ObjectMapper mapper = new ObjectMapper();
List<Marks> lista = null;
String path = "http://localhost:8080/Server/source/users/"+idUser+"/marks";
try {
lista = mapper.readValue(new URL(path), new TypeReference<List<Marks>>(){});
} catch (IOException ex) {
System.out.println(ex);
}
ObservableList<Marks> lis = FXCollections.observableArrayList(lista);
columnFirst.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getTest().getTitle()));
columnSecond.setCellValueFactory(new PropertyValueFactory<Marks,String>("date"));
columnThird.setEditable(true);
columnThird.setCellValueFactory(new PropertyValueFactory<Marks,String>("mark"));
columnThird.setCellFactory(TextFieldTableCell.forTableColumn());
columnThird.setOnEditCommit(
new EventHandler<CellEditEvent<Marks, String>>() {
@Override
public void handle(CellEditEvent<Marks, String> t) {
((Marks) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setMark(Float.parseFloat(t.getNewValue()));
}
}
);
tableEdit.getColumns().setAll(columnFirst,columnSecond,columnThird);
tableEdit.setItems(lis);
}
错误:
线程“JavaFX Application Thread”中的异常java.lang.ClassCastException:java.lang.Float无法强制转换为java.lang.String
当我评论行:
columnThird.setCellFactory(TextFieldTableCell.forTableColumn());
这是我的代码有效,但我不能编辑一行。
所以我必须将方法setCellFactory中的Float翻译成String,这样的Stack是吗?但我必须将Integer改为Float?
我添加了以下代码,但仍然没有工作,也没有构建程序:
columnThird.setCellFactory(TextFieldTableCell.forTableColumn(new StringConverter<Float>() {
@Override
public String toString(Float t) {
return t.toString();
}
@Override
public Float fromString(String string) {
return Float.parseFloat(string);
}
}));