有没有一种方法可以在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中与d3.js交互(应该能够集成在SWT中)。
我是如何得到一个要运行的最小示例的:
首先,按照github页面上的说明安装javafx-d3:
- 获取源代码
- 您可以将主文件夹用作Eclipse工作区,其中包括两个项目:
- 导入两个Eclipse Maven项目javafx-d3和javafx-d3-demo
- 构建maven项目
- 运行演示套件
com.github.javafxd3.d3.JavaFxD3DemoSuite
- 如果您没有启动并运行javafx-d3,请创建一个问题票证
(在Eclipse中工作时,我不得不解决丢失"src/test/java"文件夹的问题。)
接下来,我遵循本教程将JavaFxSingleDemo
中的browser
集成到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
}
}
相关文章:
- 我可以在Dynamics CRM 2016的复合地址字段中添加两个选项字段吗
- 在javascript问题中应用复合css规则
- 复合唯一索引
- 复合视图回调顺序
- IE 中的 html5 复合操作
- 复合视图绑定到的初始事件
- 所见即所得内容中的撤消和重做SWT中的可编辑内容;不起作用
- Javascript V8复合错误堆栈格式
- Ui路由器:复合视图渲染视图一次
- 在复合视图中序列化数据
- 在带有木偶的复合视图中创建项视图
- JavaScript 中的复合键表示形式
- 如何在 MVP 中创建复合视图
- 在 KineticJS 4.7.2 上使用全局复合操作
- 骨干木偶复合视图渲染模板
- 如何在 indexedDB 中使用带有 .upperBound 和 .lowerBound 的复合索引
- 在画布中使用全局复合操作遮罩多个形状
- 在 JavaScript for 循环中使用复合条件语句
- Illustrator 在复合路径内对对象进行分组
- 有没有一种方法可以在swt复合中使用d3.js