본문 바로가기

JavaFX

[JavaFX] KeyCode.ESCAPE esc 단축키 사용하기

JavaFX에서 ESC 키 이벤트 단축키 설정

 

 

최상위 anchorPane에

setOnkeyPressed 이벤트로 ESC 키 이벤트를 등록하면 텍스트, 콤보박스 등의 객체에서는 이벤트가 발생하지만,

테이블에 커서가 있을때는 이벤트가 작동하지 않는 상황이 발생한다.

 

@FXML private AnchorPane anchorPane;
@FXML private TableView<UserVO> table;

public void addEventListener() {
  anchorPane.setOnKeyPressed(e -> {
    if(KeyCode.ESCAPE == e.getCode() {
      close();
    }
  });
  table.setOnKeyPressed(e -> {
    if(KeyCode.ESCAPE == e.getCode() {
      close();
    }
  });
}

 

Scene 에 addEventFilter를 사용하면 해결된다.

anchorPane에서 scene를 불러와서 KeyEvent.KEY_PRESSED로 이벤트를 등록하면

테이블에서도 ESC 이벤트를 발생시킬 수 있다.

 

anchorPane.getScene().addEventFilter(KeyEvent.KEY_PRESSED, e -> {
  if(KeyCode.ESCAPE == e.getCode()) {
    close();
  }
});