JavaFX tableview清除集合

时间:2017-04-21 15:22:20

标签: java user-interface javafx

我有一个tableview,我想要做的是基于具有环境类型的单选按钮; QA,DEV,PROD等。它在表视图中添加了一个可观察的列表,如果单击另一个单选按钮,它将清除前一个环境的列表,并在tableview中显示相关的可观察列表。

我的问题是,因为obs列表通过引用传递到tableview, tableview.getItems()。clear()清除tableview和列表。我试图这样做 - 它只清除tableview中显示的内容而不是原始列表。

ObservableList<BarFile> devCheckboxList = FXCollections.observableArrayList();
//List gets populated with files elsewhere
                    switch (chk.getText()) {
                    //Check to see which checkbox is selected
                    case "DEV":
                        tableView.getItems().clear();
                        System.err.println("DEV IS TRUE");
                        environmentCheck("DEV");
                        //Add to listview
                        tableView.setItems(devCheckboxList);
                        break;
}

Populated Tableview

Tableview when environment is switched

1 个答案:

答案 0 :(得分:1)

如果您不想清除现有列表,请不要拨打clear()

ObservableList<BarFile> devCheckboxList = FXCollections.observableArrayList();
//List gets populated with files elsewhere

    switch (chk.getText()) {
    //Check to see which checkbox is selected
    case "DEV":
        // tableView.getItems().clear();
        System.err.println("DEV IS TRUE");
        environmentCheck("DEV");
        //Add to listview
        tableView.setItems(devCheckboxList);
        break;

}

由于您无论如何都要替换表的整个列表,因此对clear()的调用对表中显示的内容没有影响。