HOWTO · Java

JavaFX의 setOnAction 메서드

setOnAction()을 사용해 JavaFX 버튼 작업을 처리하고 레이블을 업데이트하는 방법을 알아보세요.

이 페이지의 내용

JavaFX에서는 컨트롤에 setOnAction()을 호출하여 사용자가 컨트롤을 활성화할 때 어떤 일이 일어나야 하는지 등록합니다. 버튼 핸들러는 레이블을 업데이트하거나, 양식 값을 검증하거나, 다른 UI 작업을 시작할 수 있습니다. 예를 들어 status라는 이름의 Label과 button이라는 이름의 Button을 만든 다음 button.setOnAction(event -> status.setText("Button clicked"));를 연결합니다. 사용자가 버튼을 활성화하면 레이블이 변경됩니다.

JavaFX에서 setOnAction() 메서드 사용

setOnAction()은 이벤트 핸들러를 받습니다. 람다는 이를 제공하는 간결한 방법입니다: button.setOnAction(event -> status.setText("Button clicked"));. 버튼과 레이블은 애플리케이션 장면 안의 JavaFX 컨트롤이어야 합니다. 핸들러는 버튼을 클릭하거나 일반 컨트롤 작업을 통해 활성화할 때 실행됩니다. 임의의 키보드 키에 대한 리스너가 아닙니다.

두 컨트롤을 HBox와 같은 애플리케이션의 장면 그래프 안에 배치한 다음 그 장면을 Stage에 표시합니다. 완전한 JavaFX 애플리케이션에는 Application을 확장하는 클래스, start(Stage stage) 메서드, launch(args)를 호출하는 main 메서드도 필요합니다. 이 글에 대해 구성된 Java 런타임에는 JavaFX가 포함되어 있지 않으므로, 이러한 JavaFX 전용 API 호출은 설명되지만 실행된 프로그램으로 제시되지는 않습니다. 프로젝트에서 실행하려면 JavaFX 컨트롤 및 그래픽 모듈을 사용할 수 있게 하고, 시작 설정을 구성하여 JavaFX SDK 또는 종속성을 포함하세요.

이 예제를 실행하세요:

public class ActionHandlerDemo {
    static class Button {
        private Runnable handler;

        void setOnAction(Runnable handler) {
            this.handler = handler;
        }

        void click() {
            handler.run();
        }
    }

    public static void main(String[] args) {
        String[] label = {"Button not clicked"};
        Button button = new Button();
        button.setOnAction(() -> label[0] = "Button clicked");
        button.click();
        System.out.println(label[0]);
    }
}
Button clicked

콘솔 출력은 모델의 click() 메서드가 콜백을 호출한 뒤의 값입니다. JavaFX 애플리케이션에서는 실제 버튼을 클릭하거나 정상적으로 활성화하면 대신 status.setText("Button clicked")가 호출되고, 업데이트된 텍스트가 창에 표시됩니다.

setOnAction()으로 기능 확장

같은 핸들러가 여러 컨트롤을 업데이트하거나 입력을 검증할 수 있습니다. 작업은 집중되게 유지하세요. 더 긴 작업의 경우 해당 작업을 소유하는 메서드를 호출한 다음 그 결과로 인터페이스를 업데이트하세요.

예를 들어 제출 버튼은 텍스트 필드를 확인하고 레이블에 피드백을 표시할 수 있습니다: submitButton.setOnAction(event -> { if (nameField.getText().isBlank()) { status.setText("Enter a name"); } else { status.setText("Ready to submit"); } });. 식별자는 JavaFX 애플리케이션의 다른 곳에서 만든 컨트롤을 가리킵니다. isBlank()는 Java 11 이상에서 사용할 수 있습니다. 이전 Java 버전에서는 nameField.getText().trim().isEmpty()와 같은 트림된 문자열 검사를 사용하세요.

탐색의 경우 작업은 애플리케이션이 이미 준비한 장면을 선택할 수 있습니다. 예를 들어 stage.setScene(nextScene)입니다. 파일 저장이나 서비스 호출도 버튼 작업에서 시작할 수 있지만, 이러한 작업에는 자체 오류 처리가 필요하며 느린 작업 중 JavaFX 애플리케이션 스레드를 차단하지 않아야 합니다.

결론

setOnAction()을 사용하여 JavaFX 컨트롤의 작업을 핸들러에 연결하세요. 버튼의 경우 그 핸들러는 클릭이나 일반적인 키보드 활성화에 응답하며 레이블을 업데이트하거나 다른 작업을 수행할 수 있습니다. 콘솔 모델은 콜백 흐름을 보여줍니다. JavaFX 창을 만들지는 않습니다. 프로젝트에 아직 JavaFX가 포함되어 있지 않다면, GUI를 실행하기 전에 빌드 도구나 IDE에 필요한 라이브러리와 시작 설정을 구성하세요.