JavaFx8如何在编辑单元格后获取新值

时间:2016-11-24 21:06:13

标签: java javafx javafx-8

我尝试使用动态生成的列

更改TableView中的值

TableGenerator

  for(Person p : personList){
                TableColumn<List<String>, String> table1 = new TableColumn<>();
                table1.setText(p.getName());
                table1.setCellValueFactory(data -> {
                    List<String> rowValues = data.getValue();
                    int index = personList.indexOf(p);
                    return index >= 0 && index < rowValues.size()
                                 ? new SimpleStringProperty(rowValues.get(index))
                                 : null;
                });
                table1.setCellFactory(TextFieldTableCell.forTableColumn());

    table1.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<List<String>,String>>() {

        @Override
            public void handle(CellEditEvent<List<String>, String> event) {
                ((List<String>) event.getTableView().getItems().get(
                        event.getTablePosition().getRow())
                        ).add(event.getNewValue());

            }
        });



                tableColumnList.add(table1);
            }

            tableview.getColumns().clear();
            tableview.getColumns().addAll(tableColumnList);
            tableview.setEditable(true);

DataGenerator

for(Person p: personList){
        int index = personList.indexOf(p);
        if(index > 0 ){
        ObservableList<String> datal = FXCollections.observableArrayList();   
        datal.add(p.getName());

        for(int j = 1; j<=index; j++){
            datal.add(null);
        }
        for(int i = index; i <= personList.size() ;i++){
            datal.add("0");
        }
         tableview.getItems().add(datal);
    }

从细胞中获取新值

  for(Person person: personList){

        int row = personList.indexOf(person);
        if(row < personList.size()-2){

        for(Person c : personList){
            int column = personList.indexOf(c);
            if(column>0){


                Object item = tableview.getItems().get(row);
                Object col = tableview.getColumns().get(column);
                String value = (String) ((TableColumn) col).getCellObservableValue(item).getValue();
                if(value!= null){
                Family family = new Family(c , person , new BigDecimal(value));
                System.out.println(family.getCostofLeaving());
                }

            }
        }
    }
    }

我总是0,但我改变了这个值,我认为当我点击按钮

时它不会令人耳目一新

0 个答案:

没有答案