Java에서 JavaFX 팝업 표시

Rupam Yadav 2023년10월12일
Java에서 JavaFX 팝업 표시

이 기사에서는 팝업이라는 JavaFX 툴킷의 구성 요소 중 하나를 사용하는 방법을 살펴보겠습니다. 이름에서 알 수 있듯이 팝업 구성 요소는 JavaFX의 GUI 기능을 사용하여 실행할 때 간단한 팝업을 표시합니다. 다음은 팝업 컴포넌트를 사용하는 두 가지 예입니다.

Java에서 텍스트가 있는 팝업

실제 프로그램을 진행하기 전에 JavaFX GUI 키트를 사용하여 메서드와 클래스를 확인해야 합니다.

  • Stage: JavaFX의 최상위 클래스는 창을 확장하고 장면을 배치할 수 있는 창을 만듭니다.
  • 장면: JavaFX 장면은 JavaFX 툴킷의 지정된 구성 요소를 렌더링하는 또 다른 클래스입니다.
  • JavaFX 응용 프로그램 클래스: JavaFX 응용 프로그램을 시작하는 데 사용되며 우리가 사용하는 클래스는 응용 프로그램 클래스를 확장해야 합니다.

이제 우리는 프로그램에 왔습니다. 아래 예제에서는 Main 클래스를 만들고 JavaFX 패키지의 Application 클래스를 확장합니다. 그런 다음 애플리케이션 클래스의 추상 메소드 start()를 호출합니다. 이는 애플리케이션이 시작될 때 실행되기 때문에 필수적입니다.

start() 메소드는 JavaFX 런타임에 의해 자동으로 생성된 Stage 유형의 단일 인수를 사용합니다. stage가 메인 창이므로 stage.setTitle()을 사용하여 제목을 설정하고 JavaFX 팝업을 열기 위해 Button 컴포넌트의 객체를 생성합니다.

팝업 내부의 구성 요소를 레이아웃하기 위해 자식 노드를 그리드로 표시하는 TilePane이라는 레이아웃 구성 요소를 사용합니다. 다음으로 팝업에 표시할 Label 구성 요소의 개체를 만듭니다.

Popup 개체를 만들고 popup.getContent.add() 메서드를 사용하여 Label 개체를 추가합니다. Label의 배경을 설정하기 위해 setStyle() 메서드를 사용하고 스타일을 전달합니다.

그런 다음 setHeight()setWidth() 메서드를 사용하여 레이블의 크기를 설정합니다. 이제 버튼을 클릭할 때 팝업을 열고 닫는 이벤트 핸들러의 익명 클래스를 만듭니다.

EventHandler<ActionEvent> 유형의 익명 클래스에서 popup.isShowing()을 호출하여 팝업이 화면에 표시되는지 확인하고 표시되지 않으면 popup.show()를 사용하여 표시합니다. stage 개체가 인수로 전달되는 메서드입니다. 팝업을 숨기기 위해 hide() 함수를 사용합니다.

이제 이벤트 핸들러를 button의 액션으로 설정하고 tilePane.getChildren().add()를 사용하여 buttontilePane 레이아웃 객체에 추가합니다. 우리가 만든 모든 구성 요소를 표시하기 위해 Scene 개체를 만들고 tilePane과 각 그리드 사이의 간격을 전달합니다.

마지막으로 scene 객체를 stage 객체로 설정하고 stage 클래스의 show() 메서드를 호출합니다. 마지막으로 명령줄 인수를 사용하여 Application 클래스의 launch() 메서드를 호출합니다.

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.TilePane;
import javafx.stage.Popup;
import javafx.stage.Stage;

public class Main extends Application {
  public void start(Stage stage) {
    stage.setTitle("A Popup Example");
    Button button = new Button("Click to open a Popup");

    TilePane tilePane = new TilePane();
    Label label = new Label("This is a popup");

    Popup popup = new Popup();

    label.setStyle("-fx-background-color: grey;");
    popup.getContent().add(label);

    label.setMinWidth(100);
    label.setMinHeight(80);

    EventHandler<ActionEvent> actionEventHandler = et -> {
      if (!popup.isShowing()) {
        popup.show(stage);
        button.setText("Click to Hide a Popup");
      } else {
        popup.hide();
        button.setText("Click to open a Popup");
      }
    };

    button.setOnAction(actionEventHandler);
    tilePane.getChildren().add(button);

    Scene scene = new Scene(tilePane, 450, 360);
    stage.setScene(scene);
    stage.show();
  }

  public static void main(String[] args) {
    launch(args);
  }
}

출력(팝업을 열기 전):

자바 Javafx 팝업

출력(팝업을 연 후):

자바 Javafx 팝업

작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java JavaFX