본문 바로가기

IT공부/JAVA

JavaFX 이벤트 처리

JavaFX 이벤트 처리

 이벤트 핸들러(EventHandler)

  • JavaFX는 이벤트 발생 컨트롤과 이벤트 핸들러(EventHandler)를 분리하는 위임형(Delegation) 방식을 사용한다.
  • 위임형 방식이란 컨트롤에서 이벤트가 발생하면, 컨트롤이 직접 처리하지 않고 이벤트 핸들러에게 이벤트 처리를 위임하는 방식이다.
  • 컨트롤에 EventHandler 등록은 이벤트 이름에 해당 하는 setOnXXX() 이름을 가진 메서드로 등록한다.




FXML 컨트롤러(Controller)

  • FXML 레이아웃은 FXML 파일당 별도의 컨트롤러(Controller)를 지정해서 이벤트를 처리할수 있기 때문에 FXML 레이아웃과 이벤트 처리 코드를 완전히 분리할 수 있다.


 fx:controller 속성과 컨트롤러 클래스

  • FXML 파일의 루트 태그에 fx:controller 속성으로 컨트롤러를 지정하면 UI 컨트롤에서 발생하는 이벤트를      컨트롤러가 처리
  • initialize() 오버라이드 : 주로 UI 컨트롤 초기화, 이벤트 핸들러 등록, 속성 감시 등의 코드 작성



fx:id 속성과 @FXML 컨트롤 주입
  • FXML파일에 포함된 컨테이너 및 컨트롤의 참조하기 위해 fx:id 속성을 가짐
  • fx:id 속성을 가진 컨트롤들은 컨트롤러의 @FXML 어노테이션이 적용된 필드에 자동 주입
  • fx:id 속성값과 필드명은 동일해야 한다.



JavaFX 속성 감시와 바인딩


JavaFX는 컨트롤의 속성(property)을 감시하는 리스너를 설정할 수 있다.

속성 감시

  • JavaFX 컨트롤 속성은 세 가지 메서드로 구성된다.
  • Getter와 Setter 그리고 Property 객체를 리턴하는 메서드로 구성.
  • xxxProperty 클래스 : JavaBeans의 프로퍼티 외에 JavaFX에서 이를 확장하여 바인딩과 리스너 개념을 추가함. 
  • xxxProperty에서 xxx는 데이터 타입과 관련되있다.




속성 바인딩

  • JavaFX 속성은 다른 속성과 바인딩될 수 있다.
  • 바인딩된 속성들은 하나가 변경되면 자동적으로 다른 하나도 변경된다.
  • xxxProperty() 메서드가 리턴하는 Property 구현 객체의 bind() 메서드를 이용하면 된다.
  • 단방향 바인딩 : bind() 메서드, 바인딩 받는 쪽은 변경 불가함
  • 양방향 바인딩 : bindBidirectional()