javafx如何使表格单元格动态可编辑?

时间:2013-11-08 10:21:07

标签: javafx-2

我有一个表格视图,其中几列是可编辑的,很少是不可编辑的。 当我键入第一列中的某个值并按Tab键时,将调用一个服务,并将返回的对象映射到表行。 我的要求是根据返回对象中的标志使不可编辑列可编辑(仅在我编辑过的行中)。 下面是调用服务和将返回的对象设置为行的代码。

colCtrNo.setOnEditCommit(new EventHandler<CellEditEvent<CtrRcptDlvryDTO, String>>() {
        @Override
        public void handle(CellEditEvent<CtrRcptDlvryDTO, String> t) {
            CtrRcptDlvryDTO c = t.getTableView().getSelectionModel().getSelectedItem();
            if(c.getCtrNo() != null && !"".equals(c.getCtrNo())){

            c = GateIn.gatePassServiceRef.gateIn_validateRcptCtrFx(c, 1, 5090,null);  
            tblReceiptContent.set(t.getTablePosition().getRow(), c);
            }
        }
    }); 

请建议如何在运行时根据标志将不可编辑的列转换为可编辑列。

1 个答案:

答案 0 :(得分:1)

试试这个......

 Col.setCellValueFactory(
        new PropertyValueFactory<User, String>("Name"));
    Col.setCellFactory(TextFieldTableCell.forTableColumn());
    Col.setOnEditCommit(
        new EventHandler<CellEditEvent<User, String>>() {
            @Override
            public void handle(CellEditEvent<User, String> t) {
                ((User) t.getTableView().getItems().get(
                        t.getTablePosition().getRow())
                        ).setName(t.getNewValue());
            }
        }
    );