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()
'IT공부 > JAVA' 카테고리의 다른 글
[Tibero] Cannot create JDBC driver of class 'net.sf.log4jdbc.DriverSpy' for connect URL 'jdbc:log4jdbc:tibero:thin:@URL:PORT:tibero' (2) | 2021.04.12 |
---|---|
JavaFX 속성 감시 및 바인딩, 컨트롤 (0) | 2019.05.28 |
람다식(Lambda Expressions in Java) (0) | 2019.05.22 |
멀티쓰레드 (0) | 2019.05.21 |
중첩 클래스 (0) | 2019.05.20 |