JavaFx中TableView使用CheckBox-通用方法

核心代码

    TableColumn<Person, CheckBox> registered_col = new TableColumn<Person, CheckBox>("Registered"); 

// registered_col.setCellValueFactory(new PropertyValueFactory("checkBox"));
registered_col.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Person,CheckBox>, ObservableValue<CheckBox>>() {

        @Override
        public ObservableValue<CheckBox> call(CellDataFeatures<Person, CheckBox> param) {
            CheckBox checkBox = new CheckBox();
            checkBox.setOnAction(new EventHandler<ActionEvent>() {

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

// registered_col.getCellData(index)
registered_col.setCellFactory(new Callback<TableColumn<Person,CheckBox>, TableCell<Person,CheckBox>>() {

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

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

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

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

        @Override
        public TableCell<OrderBean, CheckBox> call(TableColumn<OrderBean, CheckBox> param) {
            TableCell<OrderBean, CheckBox> tableCell = new TableCell<OrderBean, CheckBox>(){
                @Override
                protected void updateItem(CheckBox item, boolean empty) {
                    super.updateItem(item, empty);
                    if(empty){
                        setGraphic(null);
                    }else {
                        setGraphic(item);
                    }                           
                }
            };              
            return tableCell;
        }
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,506评论 25 708
  • 进过接近一个月的实践,发现之前计划的0.0很不具体,让执行力度和效率大大打折扣,所以计划1.0整体全部修改了计划安...
    Courage_CYY阅读 442评论 0 1
  • 到底什么是爱情?我相信每个人的定义是不一样的。每个人想要的爱情也是不一样的。 有种爱情是情人眼...
    原来还是一个人阅读 484评论 2 0
  • 欢聚伤离之间,年似乎就过完了。看到张老师的过年系列文章,不由得我,又回到了那些温馨朴素的日子…… 现在的时间...
    暮霭夕颜阅读 343评论 0 2