我使用http://docs.oracle.com/javase/8/javafx/user-interface-tutorial/table-view.htm#CJAGAAEE在我的javafx表中创建了一个可编辑的单元格,但无论我尝试什么,我都无法获得新值。相反,我总是使用
获取第一列中的值firstNameCol.setOnEditCommit( (CellEditEvent<Person, String> t) -> { ((Person) t.getTableView().getItems().get( t.getTablePosition().getRow()) ).setFirstName(t.getNewValue()); });
(上面链接中的代码示例)
我的代码很大,这是我的项目,但到目前为止我的代码大致是。
timeColumn.setCellFactory(TextFieldTableCell.forTableColumn());
timeColumn.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent>() {
@Override
public void handle(TableColumn.CellEditEvent event) {
tableView.getItems().get(event.getTablePosition().getRow());
}
});
我正在编辑第1行第2列中的单元格,但由于某种原因,它始终返回第1行第1列中的对象,而不是第1行第2列中的新值。
有什么建议吗?
我尝试过的事件
tableView.getItems().get(event.getTablePosition().getRow()) + 1;
但这不起作用
答案 0 :(得分:0)
这可以帮助你找到正确的人。
TableView tempTable = (TableView)event.getTableView();
Person tempPerson = (Person)tempTable.getItems().get(event.getTablePosition().getRow());
tempPerson.setYourMethod(event.getNewValue());//maybe toString?
如果object不是Person对象,则将Person替换为您的对象类型。
答案 1 :(得分:0)
基于上面的@James_D评论。如果您想获取第一列的值,那么只需
column2.setOnEditCommit( e -> {
//here you can get the value of column1 corresponding to column2
System.out.println(e.getRowValue().getColumn1());
});