티스토리 뷰

마우스 커서 모양 변경하기

 이번시간에는 Button이나 어떤 컨트롤에 마우스 커서를 갖다댔을 때 마우스의 모양을 변경하는 방법에 대해서 알아보도록 하겠습니다.


 일단 마우스 커서의 모양자체를 변경하는 코드는 아래와 같습니다.

1
2
Button button = new Button();
button.setCursor(Cursor.HAND);
cs



  간단하죠? 이제 이 작업을 이벤트가 발생했을 때 수행하는 코드는 아래와 같습니다.


1
2
3
4
5
6
button.addEventHandler(MouseEvent.MOUSE_ENTERED, new EventHandler<MouseEvent>() {
      @Override
      public void handle(MouseEvent event) {
        button.setCursor(Cursor.HAND);
      }
    });
cs




 이것 역시도 간단합니다. 그런데 만약에 이런 버튼이 많아지면 어떡할까요?  



 그럴때는 이벤트 핸들러 클래스를 별도로 만들어주면 됩니다. 아래와 같이 말이죠.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MyButtonEventHandler implements EventHandler<MouseEvent> {
    @Override
    public void handle( final MouseEvent ME )
    {
      Object obj = ME.getSource();
 
      /**
       * 모든 버튼을 포함하는 상위 클래스인 ButtonBase를 사용
       */
      ButtonBase button = (ButtonBase) obj;
      button.setCursor(Cursor.HAND);
    }
}
 
cs



 MouseEvent의 getSource 메소드를 통해서 이벤트가 발생한 해당 객체를 가져올수 있습니다. 



그리곤 Button의 상위 클래스인 ButtonBase로 형변환을 한 뒤 모양을 변경하는 코드를 적용했습니다.



 실제 Button에 핸들러를 다는 방법은 아래와 같습니다.



1
button.addEventHandler(MouseEvent.MOUSE_ENTERED, new MyButtonEventHandler());
cs




 간단하죠?

반응형
댓글