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로 작성하게 되서 편하게 되었다.