【问题标题】:How to refresh TableView after deleting data from it?删除数据后如何刷新TableView?
【发布时间】:2015-10-03 01:53:51
【问题描述】:

删除数据后如何刷新 TableView?
(我必须点击行,然后点击 deleteButton,才能删除)

这里是我从 Observable-List 中删除数据的地方:

  @FXML
    void delAction(ActionEvent event) {
            fnlData.remove(index);  //fnl Data is the Observable List
            finalTable.getSelectionModel().clearSelection(); //finalTable ist the TableView

    }

    public final void select() {
        finalTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {

            @Override
            public void changed(ObservableValue observable, Object oldvalue, Object newValue) {
                setIndex(fnlData.indexOf(newValue));
                System.out.println("OK");
            }
        });
    }

【问题讨论】:

  • 您未显示的代码有问题。如果一切设置正确,这些调用将自动导致表更新。

标签: java javafx refresh tableview


【解决方案1】:

好的,我修好了……

代码如下:

@FXML
    void delAction(ActionEvent event) {
            fnlData.remove(index);
            finalTable.getSelectionModel().clearSelection();
        finalTable.getItems().clear();
        finalTable.getItems().addAll(fnlData);
    }

【讨论】:

  • 如果fnlData 不是对表中项目的引用(我假设不是,鉴于此答案),为什么不直接使用finalTable.getItems().remove(index); 而不是所有这些代码?
  • 哦,好吧 :) 但是“fnlData 不是对表中项目的引用”是什么意思?
  • fnlData == finalTable.getItems()false(检查一下)。如果在某个时候您调用了finalTable.setItems(fnlData),那么它将是true,并且只需调用fnlData.remove(index) 就可以了(当然,它与finalTable.getItems().remove(index) 相同)。
猜你喜欢
  • 2014-04-29
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
  • 2016-11-21
  • 2017-05-22
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
相关资源
最近更新 更多