JavaFx中TableView使用CheckBox-通用方法

核心代码

    TableColumn registered_col = new TableColumn("Registered"); 

// registered_col.setCellValueFactory(new PropertyValueFactory("checkBox"));
registered_col.setCellValueFactory(new Callback, ObservableValue>() {

        @Override
        public ObservableValue call(CellDataFeatures param) {
            CheckBox checkBox = new CheckBox();
            checkBox.setOnAction(new EventHandler() {

                @Override
                public void handle(ActionEvent event) {
                    System.out.println("nihao ");
                }
            });
            return new ReadOnlyObjectWrapper(checkBox);
        }
    });

// registered_col.getCellData(index)
registered_col.setCellFactory(new Callback, TableCell>() {

        @Override
        public TableCell call(TableColumn param) {
            TableCell tableCell = new TableCell(){
                @Override
                protected void updateItem(CheckBox item, boolean empty) {
                    super.updateItem(item, empty);
                    if(!empty)
                        setGraphic(item);
                }
            };              
            return tableCell;
        }
    });

//====================如果需要数据同步,即数据由多变少时的同步

    TableColumn is_selectCol = new TableColumn("选择"); 
    is_selectCol.setCellValueFactory(new Callback, ObservableValue>() {

        @Override
        public ObservableValue call(CellDataFeatures param) {
            CheckBox is_select = param.getValue().is_selectProperty();
            return new ReadOnlyObjectWrapper(is_select);
        }
    });
    
    is_selectCol.setCellFactory(new Callback, TableCell>() {

        @Override
        public TableCell call(TableColumn param) {
            TableCell tableCell = new TableCell(){
                @Override
                protected void updateItem(CheckBox item, boolean empty) {
                    super.updateItem(item, empty);
                    if(empty){
                        setGraphic(null);
                    }else {
                        setGraphic(item);
                    }                           
                }
            };              
            return tableCell;
        }
    });

你可能感兴趣的:(JavaFx中TableView使用CheckBox-通用方法)