2014-12-13 2 views
1

У меня есть данные в TreeMap, и я использую ObservableList для отображения данных карты. Мне нужно отредактировать значение String прямо на моем TableView. Проблема в том, как я могу изменить реальные данные в TreeMap, то есть как я могу получить старые и новые значения str из списка данных, чтобы поместить его в ключ карты.JavaFx: получить новые и старые значения из TableView

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 не работает. Я получаю с этим методом только новое значение.

ответ

0

CellEditEventt вы используете внутри вас лямбда-выражение на самом деле имеет метод 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 
    }); 

EDIT:

Не было бы возможно, чтобы вы старое значение из списка данных, прежде чем установить его на новый?

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()); 

       }); 
+0

Я пробовал много с этим методом getOldValue, но не работал. Посмотрите сейчас, пожалуйста, отредактированную часть в моем коде. –

Смежные вопросы