JavaFX | FXML 액션 이벤트 구현 | 컨트롤러 구현
그럼, 컨트롤러 클래스를 작성하자. 이번에는 com.devkuma.javafx 패키지에 “AppController.java"라는 파일명으로 파일을 생성한다. 그래고 아래와 같이 소스 코드를 작성한다.
package com.devkuma.javafx;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class AppController {
@FXML Label label1;
@FXML TextField field1;
@FXML
protected void doAction(ActionEvent ev){
String str = field1.getText();
str = "당신은 쓴 글은 '" + str + "' 이것입니다.";
label1.setText(str);
}
}
이것으로 이전의 <fx:script> 태그를 사용한 것과 같은 효과를 낼 수 있다..
그럼 이것도 포인트를 데리러 해설 해 둡시다.
그럼 소스 코드의 주요하게 봐야 하는 포인트를 살펴 보겠다.
@FXML Label label1;
@FXML TextField field1;
클래스에는 Label와 TextField가 인스턴스 필드로 사용되고 있다. 그런데 이 변수들에 대한 인스턴스를 할당하는 과정은 어디에도 찾아 볼수 없다. 이는 “@FXML"라는 어노테이션을 붙이는 것으로, FXML에 같은 이름의 fx:id의 인스턴스가 바인딩 된다.
@FXML
protected void doAction (ActionEvent ev) {...}
액션 메소드도 역시 @FXML 어노테이션이 있어서 바인딩 된다. 메소드는 protected 접근자로 해야 하므로 주의하도록 하자. 또한 Event 클래스의 인스턴스를 인수로 제공한다. 액션 이벤트라면 ActionEvent 인스턴스가 전달된다.
이 후에는 특별히 주의해야 할 점은 없다. @FXML을 지정한 필드에 인스턴스를 할당되기 때문에, Java 코드에서 그것들을 조작하는 처리를 하도록 평범하게 작성하면 된다. 이제 Java로 작성하게 되서 편하게 되었다.