JavaFX 구성 요소를 추가 할 기존 Swing 응용 프로그램이 있습니다. 내 임베디드 JFXPanel
중 하나는 Stage
을 사용하여 팝업 대화 상자를 표시하고 해당 Stage
은 기존 JFrame
을 소유자로 모달로 표시하고 싶습니다.Swing 응용 프로그램 내의 JFXPanel에서 모달 Stage 만들기
내가 수행 한 작업의 자체 포함, 컴파일 가능한 예입니다. Stage
형식을 Modality.APPLICATION_MODAL
으로 설정하고 소유자를 Scene
의 Window
, JFXPanel
내에 설정했습니다.
Swing 응용 프로그램 내에서 Stage
모달을 어떻게 만듭니 까?
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import java.awt.BorderLayout;
import java.awt.Dimension;
public class App {
public static void main(String[] args) {
new App().run();
}
public void run() {
JFrame applicationFrame = new JFrame("JavaFX Mucking");
applicationFrame.setSize(new Dimension(300, 300));
JPanel content = new JPanel(new BorderLayout());
applicationFrame.setContentPane(content);
JFXPanel jfxPanel = new JFXPanel();
content.add(jfxPanel);
Platform.runLater(() -> jfxPanel.setScene(this.generateScene()));
applicationFrame.setVisible(true);
applicationFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
private Scene generateScene() {
Button button = new Button("Show Dialog");
Scene scene = new Scene(new BorderPane(button));
button.setOnAction(actionEvent -> {
Stage stage = new Stage(StageStyle.UTILITY);
stage.initOwner(scene.getWindow());
stage.initModality(Modality.APPLICATION_MODAL);
stage.setScene(new Scene(new Label("Hello World!")));
stage.sizeToScene();
stage.show();
});
return scene;
}
}