【问题标题】:When I have Check Box checked how to delete row from Table View?当我选中复选框时,如何从表视图中删除行?
【发布时间】:2017-06-20 10:35:01
【问题描述】:

我有这些物品:

@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;

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

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

【问题讨论】:

    标签: checkbox javafx tableview tablecolumn


    【解决方案1】:

    我发现下一个效果很好的解决方案:

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

    在我的 Controller 类中的初始化方法中:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      相关资源
      最近更新 更多