Checkbox 当我选中复选框时,如何从表视图中删除行?

Checkbox 当我选中复选框时,如何从表视图中删除行?,checkbox,javafx,tableview,tablecolumn,Checkbox,Javafx,Tableview,Tablecolumn,我有以下物品: @FXML private Button bttnRemove; @FXML private TableView<EventsBean> eventsTable; @FXML private TableColumn<EventsBean, String> eventCol; @FXML private TableColumn<EventsBean, LocalDate> dateCol; @FXML private TableColumn<

我有以下物品:

@FXML
private Button bttnRemove;
@FXML
private TableView<EventsBean> eventsTable;
@FXML
private TableColumn<EventsBean, String> eventCol;
@FXML
private TableColumn<EventsBean, LocalDate> dateCol;
@FXML
private TableColumn<EventsBean, Boolean> doneCol;
@FXML
private TableColumn<EventsBean, String> observationCol;
@FXML
private TableColumn<EventsBean, Boolean> removeCol;
@FXML
私人按钮bttnRemove;
@FXML
私有表视图事件稳定;
@FXML
私有表列eventCol;
@FXML
私有表列dateCol;
@FXML
杜内科尔私人酒店;
@FXML
私有表列观测col;
@FXML
私有表列删除工具;
在removeCol中,我创建复选框:

ObservableList<EventsBean> dataList = FXCollections.observableArrayList();

@Override
public void initialize(URL location, ResourceBundle resources) {

      removeCol.setCellFactory(CheckBoxTableCell.forTableColumn(removeCol));
      removeCol.setCellValueFactory(new PropertyValueFactory<EventsBean, Boolean>("remove"));
      eventsTable.setItems(dataList);

      bttnAddEvent.setOnAction((ActionEvent e) -> {
        text = eventsSelector.getValue().toString();
        dataList.add(new EventsBean(text, isoDate, ""));
    });

      bttnRemove.setOnAction((ActionEvent e) -> {
        //code here...
    });
 }
observeListDataList=FXCollections.observearraylist();
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
setCellFactory(CheckBoxTableCell.forTableColumn(removeCol));
removeCol.setCellValueFactory(新属性ValueFactory(“移除”);
eventsTable.setItems(数据列表);
bttnAddEvent.setOnAction((ActionEvent e)->{
text=eventsSelector.getValue().toString();
添加(新的EventsBean(文本,isoDate,“”);
});
bttnRemove.setOnAction((ActionEvent e)->{
//代码在这里。。。
});
}

我想使用bttnRemove从removeCol删除选中复选框的行

我发现下一个非常有效的解决方案:

public class EventsBean {


private SimpleStringProperty event;
private SimpleObjectProperty<LocalDate> date;
private SimpleStringProperty observation;
private SimpleBooleanProperty selected;

public EventsBean(String event, LocalDate date, String observation, boolean selected) {
    this.event = new SimpleStringProperty(event);
    this.date = new SimpleObjectProperty<LocalDate>(date);
    this.observation = new SimpleStringProperty(observation);
    this.selected = new SimpleBooleanProperty(selected);
}

// the other getters and setters

public boolean getSelected(){
    return selectedProperty().get();
}

public SimpleBooleanProperty selectedProperty() {
    return this.selected;
}
}
公共类事件bean{
私人物业活动;
私有SimpleObject属性日期;
私人财产观察;
选择私有SimpleBoleAnProperty;
公共事件bean(字符串事件、LocalDate日期、字符串观察值、布尔值选择){
this.event=新的SimpleStringProperty(事件);
this.date=新的SimpleObject属性(日期);
this.observation=新的SimpleStringProperty(观察);
this.selected=新的SimpleBoleAnProperty(已选择);
}
//其他的能手和二传手
公共布尔getSelected(){
返回selectedProperty().get();
}
公共SimpleBoleAnProperty selectedProperty(){
返回此项。选择此项;
}
}
在初始化方法中的我的控制器类中:

removeCol.setCellValueFactory(cellData -> cellData.getValue().selectedProperty());

bttnRemove.setOnAction((ActionEvent e) -> {
        ObservableList<EventsBean> dataListToRemove = FXCollections.observableArrayList();
        for (EventsBean bean : dataList) {
            if (bean.getSelected()) {
                dataListToRemove.add(bean);
            }
        }
        dataList.removeAll(dataListToRemove);
removeCol.setCellValueFactory(cellData->cellData.getValue().selectedProperty());
bttnRemove.setOnAction((ActionEvent e)->{
ObservableList dataListToRemove=FXCollections.observableArrayList();
for(EventsBean:dataList){
if(bean.getSelected()){
添加(bean);
}
}
dataList.removeAll(dataListToRemove);