0

我在 Swing 应用程序中使用 JavaFx:JFxPanel 的实例已添加到 JPanel 中,直到鼠标单击 JPanel 后才会部署。

JavaFx 面板带有 CSS 并使用 FXML。加载 XML 时间和 CSS 文件时间通过缓冲一次来减少,并通过从已经创建的读取来重用。

然而,即使在 SwingUtilities.invokeLater 中的代码已执行之后,也不会在单击鼠标之前部署面板。

如何让 Java Fx 像普通面板一样工作而无需等待用户点击。

注意:我不想使用另一个 JFrame 和 JDialog 弹出窗口来显示 JFxPanel。

private void displayJFxGUI() {

    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {


           JFxPanelInit jfxPanelInit = new JFxPanelInit();
           JFxPanel jfxPanel = new JFxPanel();

            jfxPanelInit.initAndShowGUI(jfxPanel);

            swingImageEditingPanel.add(jfxPanel);
            swingImageEditingPanel.setVisible(true);
            jfxPanel.setVisible(true);
            setVisible(true);
        }
    });

}
4

1 回答 1

0

唯一需要在 FX 线程中运行的是场景创建。

SwingUtilities.invokeLater(() -> {
  FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/FXPanel.fxml"));
  AnchorPane root = (AnchorPane) loader.load();
  _fxmlController = loader.getController();

  _panel.setLayout(new BorderLayout());
  _panel.add(_jfxPanel, BorderLayout.CENTER);

  Platform.runLater(() -> {
    _jfxPanel.setScene(new Scene(root, Color.ALICEBLUE));
  });
}
于 2018-12-05T16:27:09.180 回答