Как я могу встроить приложение Dukescript в сцену JavaFX?

Я хочу встроить приложение Dukescript в приложение Swing, поэтому я считаю, что мне нужно встроить панель для поддержки рендеринга JavaFX.

final JFXPanel fxPanel = new JFXPanel();
Scene scene = createScene();
fxPanel.setScene(scene);

Чтобы иметь возможность визуализировать Dukescript, я думаю, что мне нужно добавить Webview, чтобы уже существующий презентатор JavaFX (от html для java) мог соответственно использовать его.

Group root = new Group();
final WebView browser = new WebView();
final WebEngine webEngine = browser.getEngine();
root.getChildren().add(browser);

И затем, чтобы использовать его с Dukescript, я думаю, что я должен добавить maven зависимость для докладчиков JavaFx.

<dependency>
  <groupId>org.netbeans.html</groupId>
  <artifactId>net.java.html.boot.fx</artifactId>
  <scope>runtime</scope>
</dependency>

Поэтому я думаю, что желаемый код должен быть примерно таким.

net.java.html.boot.fx.FXBrowsers presenter= new FXBrowsers();
presenter.load(browser ,
        "index.html",
        Runnable onPageLoad??);

Вы уже пробовали это? Заранее спасибо.

1 ответ

Решение

У проекта leaflet4j есть демонстрация встраивания DukeScript в JavaFX:

https://github.com/dukescript/leaflet4j

Он должен работать так же в Swing, но вам придется вызывать код JavaFX в JavaFX EventQueue, подобно этому:

Platform.runLater(new Runnable() {
  @Override
  public void run() {
    webView = new WebView();
    FXBrowsers.load(webView, this.getClass().getResource("/demo/test.html"),
      new Runnable() {
        @Override
        public void run() {
          try {
            DataModel.onPageLoad();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      });
    }
  }
);
Другие вопросы по тегам