[英]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.