본문 바로가기

JavaFX

[JavaFX] TreeTableView Key event - Row Delete

JavaFX TreeTableView 키보드 Delete로 선택 row 삭제하기

 

 

TreeTableView 생성

 

[JavaFX] TreeTableView, JFXTableView 만들고 데이터 저장하기

JFXTableView, TreeTableView 만들기 기본 TreeTableView 사용법 최상위 root로 TreeItem rootTitle 을 생성 subTitle1을 생성하고 그 밑으로 Sub1_1, Sub1_2을 add 한다. 같은 방법으로 subTitle2를 생성한다. 최..

ohtanja.tistory.com

 

Root 와 Sub 데이터를 삭제

KeyCode.DELETE로 키보드 이벤트

Root 데이터 삭제

 - rootItem.getChildren().remove();

Sub 데이터 삭제

 - Root의 인덱스 번호 찾기 : selected.getParent().getParent().getChildren().indexOf();

 - rootItem.getChildren().get(index).getChildren().remove();

 

@FXML private TreeTableView<UserVO> tree;

private void addEventListener() {
  tree.setOnKeyPressed(new EventHandler<KeyEvent>() {
    @Override
    public void handle(KeyEvent ke) {
      if(ke.getCode().equals(KeyCode.DELETE) {
        /* Root row 삭제 */
        if(tree.getSelectionModel().getSelectedItem().getValue().getId() != null) {
          rootItem.getChildren().remove(tree.getSelectionModel().getSelectedItem());
        } else {
          TreeItem<UserVO> selected = tree.getSelectionModel().getSelectedItem();
          /* root index */
          int index = selected.getParent().getParent().getChildren().indexOf(selected.getParent());
          /* sub delete */
          rootItem.getChildren().get(index).getChildren().remove(selected);
        }
      }
    }
  }
}