java - 从 TableView javafx 中删除列

标签 java javafx javafx-8

我在 javafx 中有一个 TableView ,我动态添加列,因为我不知道列数。我希望当我单击一个按钮时,tableView 的所有行和列都将被删除。我有下面的代码。我想在表中添加新数据之前从中删除所有列。我尝试了很多我在网上找到的东西,但没有任何效果。谢谢。

public void handleEventsClick(){
    String tableName = (String) events.getSelectionModel().getSelectedItem();

    ObservableList<ObservableList> transitionEvents = FXCollections.observableArrayList();

    tableColumns = new TableColumn[traEv.size()];

    int trEvSize = 0;

    for(int i = 0; i < traEv.size();i++){
        ArrayList<TransitionSubsequencePair> tep = traEv.get(i); 

        TableColumn tc = new TableColumn("TrEv:" + i);
        tableColumns[i] = tc;
            final int j = i;
            tc.setCellValueFactory(new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){                    
                public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {                                                                                              
                    return new SimpleStringProperty(param.getValue().get(j).toString());                        
                }                    
            });
            eventsTableView.getColumns().addAll(tc);
    }

    ObservableList<String> row = FXCollections.observableArrayList();
    row.clear();
    for(int i = 0; i < traEv.size();i++){
        ArrayList<TransitionSubsequencePair> tep = traEv.get(i); 

        ArrayList<String> seenTables = new ArrayList<String>();
        for(TransitionSubsequencePair tre: tep){
            System.out.println(tre.getTable());
            String lala = "";
            if(tre.getTable().equals(tableName) && (!seenTables.contains(tre.getTable()) || seenTables.isEmpty())){
                System.out.println(i);
                lala += tre.getTransition() + ":" + tre.getSubsequence() + ",";
                row.add(lala);
                seenTables.add(tre.getTable());
            }
            System.out.println("--"+lala);
        }


    }
    transitionEvents.add(row);


    eventsTableView.setItems(transitionEvents); // finally add data to tableview


}

最佳答案

删除所有数据:

eventsTableView.getItems().clear();

删除所有列:

eventsTableView.getColumns().clear();

关于java - 从 TableView javafx 中删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386511/

相关文章:

java - 如何访问类范围外但在父类范围内的变量?

java - 丑陋的java数据结构

com.sun.faces.context.flash.ELFlash.getFlash 中的 java.lang.NullPointerException

java - 如何使用按钮更改矩形

java - 如何在给定名称的 Jena TDB 上查询模型

JavaFX切换场景

JavaFX FXML : Cannot bind to static property

JavaFX 只能输入数字或字母,并允许按 TAB/ESCAPE/BACKSPACE 等

JAVA FXML 复选框和文本字段绑定(bind)

java - append 到文件时如何关闭 JavaFX FileChooser 的覆盖警告?