본문 바로가기

JavaFX

[JavaFX] TableView ChangeListener 마우스 클릭 없이 키보드 Event 조작

TableView에 목록을 선택하기

 

  • TableView 키보드 방향키로 이벤트 호출
  • TableView 마우스 클릭 이벤트 호출

 

 

fxml에서 TableView 생성 후 table 이름으로 선언

table의 ChangeListener로 table의 선택 시 변경이 생기면 이벤트가 발생

table의 setOnMouseClicked로 table 마우스 클릭 이벤트 발생

ChangeListener와 setOnMouseClicked를 두 개 동시에 등록 시 키보드로 목록을 변경하면 두 개의 이벤트가 다 발생한다.

키보드와 마우스 클릭 이벤트를 둘다 적용하려면 ChangeListener 이벤트만 등록

마우스 클릭 이벤트만 발생하고 싶으면 onMouseClick 이벤트만 등록

 

@FXML private TableView<UserVO> table;

private init() {
  table.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<UserVO>() {
    @Override
    public void changed(ObservableValue<? extends UserVO> observable, UserVO oldValue, UserVO newValue) {
      // 메소드 호출
      if(newValue != null){
        userSearch(table.getSelectionModel().getSelectedIndex());
      }
    }
  }
  
  table.setOnMouseClicked(new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {
      if(table.getSelectionModel().getSelectedItem() != null) {
        userSearch(table.getSelectionModel().getSelectedIndex());
      }
    }
  }
}

private void userSearch() {
  // ...
}