簡體   English   中英

有沒有辦法在swt復合中使用d3.js

[英]Is there a way to use d3.js in swt composite

我正在開發一個eclipse插件,在其中需要某種數據可視化。 我發現d3的可視化非常有用。 由於d3是一個JavaScript庫,因此可以在瀏覽器中顯示圖表。 但我希望圖表顯示在swt復合上。

有沒有辦法做到這一點...

您可以使用SWT瀏覽器小部件。 默認情況下,它鏈接到Windows上的IE DLL和Linux上的XULrunner DLL。

您可以使用javafx-d3與JavaFx WebView(應該可以集成到SWT中)中的d3.js進行交互。

我如何運行一個最小的示例:

首先,按照github頁面上的說明安裝javafx-d3:

  • 獲取源代碼
  • 您可以將主文件夾用作包含兩個項目的Eclipse工作區:
  • 導入兩個Eclipse Maven項目javafx-d3和javafx-d3-demo
  • 建立Maven項目
  • 運行演示套件com.github.javafxd3.d3.JavaFxD3DemoSuite
  • 如果您沒有啟動並運行javafx-d3,請創建一個問題單。

(在Eclipse中工作,我不得不解決途中缺少“ src / test / java”文件夾的問題。)

接下來,我按照本教程browserJavaFxSingleDemo集成到SWT shell中。 (我必須手動導入javafx.embed.swt包-參見此線程

public class SwtIntegrationDemo {

    private static Scene scene;
    private static JavaFxD3Browser browser;

    public static void main(final String[] args) {

        final Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setText("JavaFX / SWT Integration");
        shell.setLayout(new FillLayout());
        final FXCanvas canvas = new FXCanvas(shell, SWT.NONE);        

        //define d3 content as post loading hook
        final Runnable postLoadingHook = () -> {
            System.out.println("Initial loading of browser is finished");
            //do some d3 stuff
            createD3Example();        };

        //create browser
        browser = new JavaFxD3Browser(postLoadingHook, true);

        //create the scene
        scene = new Scene(browser, 750, 500, Color.web("#666970"));
        canvas.setScene(scene);
        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();    
    }

    private static void createD3Example() {
        // code from JavaFxD3SingleDemo.java
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM