JavaFX WebView ScrollEvent侦听器将放大并滚动。只希望它放大

时间:2018-06-26 17:16:31

标签: java javafx webview

我一直在寻找是否有人遇到过此问题,但是大多数问题似乎无关。我在滚动窗格中有一个JavaFX WebView。我正在尝试制作,因此当您按住Ctrl +滚轮时,它将相应地放大和缩小。

该代码确实可以放大和缩小,但是不正确。当我按住Ctrl +滚轮时,它既可以滚动也可以缩放。

这是我的代码的相关部分:

// Allow for dynamic zooming based on scrollwheel
  webview.addEventHandler(ScrollEvent.SCROLL, (ScrollEvent e) -> {
     System.out.println("Zoom in or out based on scroll bar");
     double deltaY = e.getDeltaY();
     System.out.println(deltaY + "    " + e.isControlDown());
     if(e.isControlDown() && deltaY > 0) {
        webview.setZoom(webview.getZoom() * 1.1);
     } else if(e.isControlDown() && deltaY < 0) {
        webview.setZoom(webview.getZoom() / 1.1);
     }
  });

我保留了打印输出语句,以帮助进行可能的故障排除。提前谢谢你。

编辑

我可能应该包括将WebView放在ScrollPane中的方式,

scrollpane.setContent(webview);

1 个答案:

答案 0 :(得分:2)

正如@Slaw在我的问题中评论的那样,我所要做的就是在if语句中使用事件并将事件处理器从处理程序更改为过滤器,如下所示:

webview.addEventFilter(ScrollEvent.SCROLL, (ScrollEvent e) -> {
     double deltaY = e.getDeltaY();
     if(e.isControlDown() && deltaY > 0) {
        webview.setZoom(webview.getZoom() * 1.1);
        e.consume();
     } else if(e.isControlDown() && deltaY < 0) {
        webview.setZoom(webview.getZoom() / 1.1);
        e.consume();
     }
  });