首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向JFrame添加JFXPanel。为什么它不工作?

向JFrame添加JFXPanel。为什么它不工作?
EN

Stack Overflow用户
提问于 2011-07-16 00:09:50
回答 2查看 8.5K关注 0票数 0

我正在尝试将JFXPanel添加到我的JFrame中。我使用的是Netbeans和Netbeans的Swing GUI生成器。当我运行它时,我没有得到任何错误,并且成功地创建了JFrame,但是没有显示包含该文本的JFXPanel。

下面是我的代码:

代码语言:javascript
复制
public class TestingFX {

  private static void initJFrame() {

    NewJFrame frame = new NewJFrame();
    final JFXPanel fxPanel = new JFXPanel();
    frame.add(fxPanel);
    frame.setVisible(true);

    Platform.runLater(new Runnable() {

        @Override
        public void run() {
            fxPanel.setScene(createScene());
        }
    });
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            initJFrame();
        }
    });
  }

  public static Scene createScene() {
    Text text = new Text("Hello World");
    text.setFont(new Font(24));
    text.setEffect(new Reflection());

    BorderPane pane = new BorderPane();
    pane.setCenter(text);
    Scene scene = new Scene(pane);

    return scene;
  }
}

为什么它不工作?我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-16 01:13:13

也许您应该阅读Integrating JavaFX into Swing Applications,然后相应地重构您的代码。

试一试

代码语言:javascript
复制
public class Demo extends Application{
    private static JFXPanel javafxPanel;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                initAndShowGUI();
            }
        });
    }

    public static void initAndShowGUI() {
        JFrame frame = new JFrame("Swing application");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Create JavaFX panel.
        javafxPanel = new JFXPanel();
        frame.getContentPane().add(javafxPanel, BorderLayout.CENTER);

        // Create JavaFX scene.
        Application.launch (Demo.class, null);

        // Show frame.
        frame.pack();
        frame.setVisible(true);
    }

    @Override
    public void start (Stage mainStage) {
        // Add scene to panel
        javafxPanel.setScene(createScene());
    }

    private static Scene createScene() {
        Text text = new Text("Hello World");
        text.setFont(new Font(24));
        text.setEffect(new Reflection());

        BorderPane pane = new BorderPane();
        pane.setCenter(text);
        Scene scene = new Scene(pane);

        return scene;
    }
}

创建场景时,此示例假定包含的代码有效。

票数 3
EN

Stack Overflow用户

发布于 2018-04-20 04:42:12

我正在尝试将JFXPanel添加到JPanel中,这为我解决了问题,也可能对您有所帮助

代码语言:javascript
复制
jpanel1.setLayout(new FlowLayout());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6710002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档