본문 바로가기

JavaFX

[JavaFX] TreeTableColumn에 TextField 넣고 변경하기

JavaFX TreeTableView 의 column에 TextField넣고 변경하기

 

사용자 entity 생성

 

@Entity
@Data
public class UserVO {
  private String id;
  private String name;
}

 

  • userTree 변수명으로 Tree 생성
  • colId, colName 컬럼명 생성
  • setOnEditCommit 이벤트로 TextField명을 변경했을 때의 이벤트 호출
@FXML private TreeTableView<UserVO> userTree;
@FXML private TreeTableColumn<UserVO> colId, colName;

private void treeSetting() {
  colName.setCellValueFactory(new TreeItemPropertyValueFactory<UserVO, String>("name"));
  
  colName.setCellFactory(new Callback<TreeTableColumn<UserVO, String>, TreeTableCell<UserVO, String>>() {
    @Override
    public TreeTableCell<UserVO, String> call(TreeTableColumn<UserVO, String> param) {
      return new TextFieldTreeTableCell<>();
    }
  });
  
  colName.setCellFactory(TextFieldTreeTableCell.forTreeTableColumn());
  
  colName.setOnEditCommit(new EventHandler<TreeTable.CellEditEvent<UserVO, String>>() {
    @Override
    public void handle(TreeTableColumn.CellEditEvent<UserVO, String> event) {
      TreeItem<UserVO> entity = userTree.getTreeItem(event.getTreeTablePosition().getRow());
      entity.getValue().setName(event.getNewValue());
    }
  });
}