본문 바로가기

JavaFX

[JavaFX] multiple key event Combination ctrl + s 단축키 사용

JavaFX 단축키 등록하기

 

JavaFX 에서 키보드를 이용하여 단축키를 사용하는 방법 3가지

 

setOnKeyPressed 를 이용하는 방법
@FXML private JFXTextField jfxTextField;

public void addEventListener() {
  jfxTextField.setOnKeyPressed(new EventHandler<KeyEvent>() {
    @Override
    public void handle(KeyEvent ke) {
      if(ke.getCode() == KeyCode.ENTER) {
        System.out.println("Enter key");
      }
    }
  }
}

 

 

KeyCombination을 이용하는 방법
@FXML private AnchorPane anchorPane;

public void addEventListener() {

  Platform.runLater(() -> {
    anchorPane.getScene().getAccelerators().put(new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_ANY), new Runnable() {
      @Override
      public void run() {
        System.out.println("Ctrl + S = 저장");
      }
    }
  });
}

 

 

setOnKeyPressed + KeyCombination 을 이용하는 방법
@FXML private AnchorPane anchorPane;

public void addEventListener() {

  anchroPane.setOnKeyPressed(e -> {
    if(new KeyCodeCombination(KeyCode.A, KeyCombination.CONTROL_DOWN).match(e)) {
      System.out.println("Ctrl + A");
    } else if(new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_DOWN).match(e)) {
      System.out.println("Ctrl + S");
    } else if(new KeyCodeCombination(KeyCode.ENTER, KeyCombination.CONTROL_DOWN).match(e)) {
      System.out.println("Ctrl + ENTER");
    }
  });
  
}