【发布时间】:2019-02-13 10:47:17
【问题描述】:
我制作了一个可编辑的表格。对于具有字符串属性的列,请执行以下操作:
col_age.setCellFactory(TextFieldTableCell.forTableColumn());
col_age.setOnEditCommit(new EventHandler<CellEditEvent>() {
@Override
public void handle(CellEditEvent event) {
String a = event.getNewValue().toString();
int i = Integer.parseInt(a);
((Persona)event.getTableView().getItems().get(
event.getTablePosition().getRow()
)).setAge(i);
}
});
现在我想让列年龄可编辑。但是年龄是一个整数。所以我尝试了这个:
col_age.setCellFactory(TextFieldTableCell.forTableColumn());
col_age.setOnEditCommit(new EventHandler<CellEditEvent>() {
@Override
public void handle(CellEditEvent event) {
String a = event.getNewValue().toString();
int i = Integer.parseInt(a);
((Persona)event.getTableView().getItems().get(
event.getTablePosition().getRow()
)).setAge(i);
}
});
但我收到以下错误消息:
原因:java.lang.ClassCastException:java.lang.Integer 不能 转换为 java.lang.String
有人可以帮我吗?
谢谢。
【问题讨论】:
-
a) 您需要将 textFieldTableCell 与转换器一起使用,请参阅 api 文档 b) 如果您仍然卡住,请提供一个 minimal reproducible example 来说明问题(很可能是您的表'未按预期设置)c)与您的问题无关:请学习 java 命名约定并遵守它们