JavaFX는 다양한 플랫폼에서 터치 이벤트를 처리할 수 있는 강력한 기능을 제공합니다. 이 글에서는 JavaFX에서 터치 이벤트를 처리하는 방법을 알아보겠습니다.
1. 터치 이벤트 등록하기
JavaFX에서 터치 이벤트를 처리하기 위해서는 Scene 객체에 이벤트 리스너를 등록해야 합니다. 이를 위해 setOnTouchPressed
, setOnTouchReleased
, setOnTouchMoved
, setOnTouchExited
, setOnTouchEntered
등의 메서드를 사용할 수 있습니다.
scene.setOnTouchPressed(touchEvent -> {
double touchX = touchEvent.getTouchPoint().getX();
double touchY = touchEvent.getTouchPoint().getY();
// 터치 이벤트 처리 코드 작성
});
위의 예제에서는 setOnTouchPressed
메서드를 사용하여 터치 이벤트가 발생할 때 호출되는 람다 표현식을 등록하고 있습니다. getTouchPoint
메서드를 사용하여 터치한 좌표를 얻을 수 있습니다.
2. 터치 이벤트 처리하기
터치 이벤트를 처리하기 위해서는 터치 이벤트를 발생시킨 노드의 속성을 변경하거나 애니메이션을 적용하는 등의 작업을 수행할 수 있습니다. 아래는 터치한 위치에 사각형을 그리는 예제 코드입니다.
scene.setOnTouchPressed(touchEvent -> {
double touchX = touchEvent.getTouchPoint().getX();
double touchY = touchEvent.getTouchPoint().getY();
Rectangle rectangle = new Rectangle(touchX, touchY, 50, 50);
rectangle.setFill(Color.BLUE);
// 터치한 위치에 사각형 추가
root.getChildren().add(rectangle);
});
위의 예제에서는 터치가 발생한 좌표를 사용하여 Rectangle
객체를 생성하여 해당 위치에 추가하고 있습니다.
3. 다양한 터치 이벤트 처리하기
JavaFX에서는 터치 이벤트뿐만 아니라 드래그, 확대/축소 등의 다양한 터치 제스처를 처리할 수도 있습니다. 예를 들어, 아래는 드래그 제스처를 사용하여 사각형을 이동시키는 예제 코드입니다.
Rectangle rectangle = new Rectangle(100, 100, 50, 50);
rectangle.setFill(Color.BLUE);
rectangle.setOnTouchPressed(touchEvent -> {
// 터치 시작 시 사각형의 초기 위치 저장
rectangle.setUserData(new Point2D(rectangle.getX(), rectangle.getY()));
});
rectangle.setOnTouchMoved(touchEvent -> {
double deltaX = touchEvent.getTouchPoint().getX() - touchEvent.getTouchPoint().getSceneX();
double deltaY = touchEvent.getTouchPoint().getY() - touchEvent.getTouchPoint().getSceneY();
// 사각형 이동
rectangle.setX(rectangle.getUserData().getX() + deltaX);
rectangle.setY(rectangle.getUserData().getY() + deltaY);
});
위의 예제에서는 setOnTouchPressed
메서드를 사용하여 터치 시작 시 사각형의 초기 위치를 저장하고, setOnTouchMoved
메서드를 사용하여 터치 이동 시 사각형을 이동시키고 있습니다. getSceneX
와 getSceneY
메서드를 사용하여 터치 이동 거리를 계산하고, setX
와 setY
메서드를 사용하여 사각형의 위치를 변경하고 있습니다.
참고 자료
JavaFX API 문서: https://openjfx.io/javadoc/16/