JavaFX模式窗口所有权到Swing

 2023-02-17    391  

问题描述

我有一个与Javafx集成的Swing构建的应用程序. Swing的Jframe是顶级窗口,其中JFXPanel壳体外壳不同的Javafx控件.现在,我还整合了Javafx的新警报API,目前在显示时很难设置Alert的所有权.也就是说,我想将Jframe作为Alert的所有者.

JFXPanel fxPanel = new JFXPanel();
Platform.runLater(() -> {
    Button button = new Button("Alert");
        button.setOnAction(evt -> {
            Alert alert = new Alert(Alert.AlertType.INFORMATION);
                alert.setHeaderText("An Alert");
                alert.setContentText("Alerting");
                alert.initModality(Modality.APPLICATION_MODAL);
                alert.initOwner(button.getScene().getWindow());
                alert.initStyle(StageStyle.UTILITY);
                alert.show();
            });
    BorderPane borderPane = new BorderPane();
        borderPane.setCenter(button);
    Scene scene = new Scene(borderPane, 300, 300);
    SwingUtilities.invokeLater(() -> {
        fxPanel.setScene(scene);
        JFrame frame = new JFrame("App");
            frame.add(fxPanel);
            frame.setSize(300, 300);
            frame.setLocationRelativeTo(null);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    });
});

我知道,返回此代码alert.initOwner(button.getScene().getWindow());中的窗口引用时,返回对象.我知道,将Jframe作为Alert的窗户所有者是不可能的.但是,是否有黑客实现这一目标?

JavaFX模式窗口所有权到Swing

推荐答案

在这里看:
http://docs.oracle.com/javase/javase/8/javafx/Interroperability-tutorial/swing-fx-interoperability.htm

它说这样的话 – >

JFrame frame = new JFrame("Swing and JavaFX");
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);

以上所述是小编给大家介绍的JavaFX模式窗口所有权到Swing,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34199.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。