当前位置: 首页 > 知识库问答 >
问题:

在JavaFX Webview中使用D3缩放

黄跃
2023-03-14

我有一个呈现图形的JavaFX Webview(使用D3)。我想在JavaFX应用程序中实现此图上的“鼠标滚动缩放”(当鼠标悬停在webview顶部时)。我能够使用以下d3 js代码在Web浏览器上成功完成它

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height)
    .call(d3.behavior.zoom().on("zoom", zoomHandler))
    .append('g');


function zoomHandler() {
  svg.attr("transform",
      "translate(" + d3.event.translate + ")"
      + " scale(" + d3.event.scale + ")");
}

但是,如果我在JavaFX应用程序的WebView中执行类似操作,图形最初会在WebView中呈现,但会滚动,只会消失,并且只有当我将鼠标滚动恢复到初始位置(应用程序启动时)时才会重新出现

以下代码是我如何使用WebView渲染图形

html lang-html prettyprint-override">        final URL urlLoadMainGraph = getClass().getResource("html/MainGraph.html");                
        weMainGraph.load(urlLoadMainGraph.toExternalForm());     

正在做的事情有什么问题吗?

谢谢

共有2个答案

韦宣
2023-03-14

zoomhandler代码示例中似乎有一个bug。您可能希望从如下处理程序开始,然后继续:

function zoomHandler() {
  alert('zoom');
}

下面是一个更详细的d3缩放示例:

http://bl.ocks.org/mbostock/3892919

下面是D3的JavaFx包装器,其中还包含一个工作的缩放示例:

https://github.com/stefaneidelloth/javafx-d3

https://github.com/stefaneidelloth/javafx-d3/blob/master/javafx-d3-demo/src/main/java/com/html" target="_blank">github/javafxd3/demo/client/democases/behaviors/ZoomDemo.java

袁霍英
2023-03-14

我不能提供一个解决方案,但我有同样的问题。问题是,你没有指定任何比例。

JavaFX只是通过鼠标滚轮上的一个“提示”从缩放的最小尺度跳到最大尺度:(。如果您在一定范围内指定它,它可能会适合您。例如,使用它向外缩放一点。

 var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height).call(d3.behavior.zoom().scaleExtent([0.75, 1]);

迄今为止最好的...希望有答案!

(附言:我无可奉告……这就是为什么这样回答。

 类似资料:
  • 问题内容: 我一直在尝试在Node.js中调用D3。我首先尝试使用脚本标签从D3的网站导入d3.v2.js D3的作者建议一个人应该“ npm install d3” …我做到了,我可以在节点控制台中成功调用它: 但是,当尝试使用“ node app.js”从app.js调用它时,我得到: 我意识到,D3的作者在其他地方已经明确规定了应该使用画布: https://github.com/mbost

  • 问题内容: 在D3.js v4中,删除了d3.transform方法,但没有有关如何替换它的任何提示。有谁知道如何替换以下D3.js v3指令? 问题答案: 编辑2016-10-07: 有关更一般的方法,请参见下面的附录。 根据变更日志,它已消失。不过,中有一个函数,供内部使用进行计算。可悲的是,它没有暴露于外部使用。 也就是说,即使不使用任何D3,也很容易做到: 这将使用标准DOM方法创建一个用

  • Chrome不使用D3.js选择。在下面的代码中,所有选择都是空的。 如果将替换为,就可以了。

  • 这是我第一次面对这个问题,但想不出原因。 我正在使用d3创建一个冰柱图。 有一个click事件正在激发并调用。我看到控制台日志,这意味着我确实有权访问,但当我尝试设置它时,什么也没有发生:没有新页面,没有错误页面,什么也没有!

  • 本文向大家介绍d3.js 使用D3 js创建SVG元素,包括了d3.js 使用D3 js创建SVG元素的使用技巧和注意事项,需要的朋友参考一下 示例 尽管D3并非专门用于处理SVG元素,但它已广泛用于创建和处理基于SVG的复杂数据可视化。D3提供了许多强大的方法,可帮助轻松创建各种几何SVG结构。 建议首先了解SVG规范的基本概念,然后使用大量的D3 js示例创建可视化效果。 D3 JS范例 SV

  • 问题内容: 有人可以向我解释zlib库在Nodejs中如何工作吗? 我对Node.js很陌生,还不确定如何使用缓冲区和流。 我的简单情况是一个字符串变量,我想将字符串压缩或解压缩(压缩或膨胀,gzip或gunzip等)到另一个字符串。 即(我希望它如何工作) 感谢您的帮助:) 问题答案: 更新 :没意识到在节点0.5中有一个新的内置“ zlib”模块。我在下面的答案是针对第三方node- zlib