2

編集可能な列と編集不可能な列がほとんどないテーブル ビューがあります。最初の列に値を入力してタブを押すと、サービスが呼び出され、返されたオブジェクトがテーブル行にマップされます。私の要件は、返されたオブジェクトのフラグに基づいて、編集不可の列を編集可能にすることです(編集した行のみ)。以下は、サービスを呼び出し、返されたオブジェクトを行に設定するためのコードです。

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);
            }
        }
    }); 

実行時にフラグに基づいて、編集不可の列を編集可能にする方法を提案してください。

4

1 に答える 1

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());
            }
        }
    );
于 2013-11-08T12:16:00.990 に答える