簡體   English   中英

JavaFx:從TableView獲取新舊值

[英]JavaFx: Get the new and old values from TableView

我將數據保存在TreeMap中,並使用ObservableList呈現地圖數據。 我需要直接在TableView上編輯String值。 問題是,如何更改TreeMap上的實際數據,即如何從數據列表中獲取舊的和新的str值並將其放入map鍵中。

private Map<String, Long> map = new TreeMap<>();

private ObservableList<TableBean> data = FXCollections.observableArrayList();
....

articles.setCellFactory(TextFieldTableCell.forTableColumn());
    articles.setOnEditCommit(
              t -> {
                    ((TableBean) t.getTableView().getItems().get(
                                t.getTablePosition().getRow())
                      ).setArticles(t.getNewValue());

                    //Edited:
                     System.out.println(t.getOldValue());

                  });

getOldValue方法不起作用。 我用這種方法獲得了新的價值。

所述CellEditEvent t您使用您內lambda表達式實際上具有的方法getOldValue() 它將返回特定單元格的前值。

articles.setOnEditCommit(
    t -> {
        ((TableBean) t.getTableView().getItems().get(
        t.getTablePosition().getRow())
        ).setArticles(t.getNewValue());
//  you can use "t.getOldValue()" here to get the old value of the particular cell
    });

編輯:

在將舊值設置為新值之前,是否有可能從數據列表中獲得舊值?

articles.setCellFactory(TextFieldTableCell.forTableColumn());
articles.setOnEditCommit(
          t -> {
                // get your old value before update it
                System.out.println(((TableBean) t.getTableView().getItems().get(
                            t.getTablePosition().getRow())
                  ).getArticles());

                ((TableBean) t.getTableView().getItems().get(
                            t.getTablePosition().getRow())
                  ).setArticles(t.getNewValue());

                //Edited:
                 System.out.println(t.getOldValue());

              });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM