2014-12-13 3 views
1

저는 TreeMap에 데이터를 가지고 있고 ObservableList를 사용하여 맵 데이터를 렌더링합니다. 내 TableView 직접 문자열 값을 편집해야합니다. 문제는 어떻게 TreeMap에서 실제 데이터를 변경할 수 있습니까? 즉, 데이터 목록에서 이전 str 값과 새로운 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 
    }); 

편집 : 당신이 새로운 하나를 설정하기 전에

은 그렇지 수 있을까, 데이터 목록에서 당신이 이전 값을 얻는 방법?

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로 많은 시도를했지만 작동하지 않았다. 편집 된 부분을 내 코드에서 확인하십시오. –

관련 문제