Javafx获取在tableview中更改的单元格的新值

时间:2017-04-08 14:10:36

标签: javafx tableview

我使用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;

但这不起作用

2 个答案:

答案 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());
});
相关问题