在WebView中,按下+和 - 键时执行放大和缩小功能

时间:2017-10-09 10:03:26

标签: java javafx

由于我在应用程序中将JavaFX应用程序设为三个WebView,我必须执行放大和缩小功能,同时按+和 - 键。代码如下:

  StackPane root = new StackPane();

        HBox hbox = new HBox(30); // create a HBox to hold 2 vboxes        

        // create a vbox with a textarea that grows vertically
        VBox vbox = new VBox(10);  
        //Label label1 = new Label("");

        final WebView img = new WebView();
         final WebEngine Img = img.getEngine();
         final DoubleProperty zoomProperty = new SimpleDoubleProperty(200);
 img.addEventFilter(KeyEvent.KEY_RELEASED, (KeyEvent e) -> {
            if (e.getCode() == KeyCode.ADD || e.getCode() == KeyCode.EQUALS || e.getCode() == KeyCode.PLUS) {
                System.out.println("YES");
                    zoomProperty.set(zoomProperty.get() * 1.1);
            }
            else if(e.getCode()== KeyCode.SUBTRACT||e.getCode() == KeyCode.MINUS ){
                System.out.println("YES");
                zoomProperty.set(zoomProperty.get() / 1.1);
            }
        });

通过此代码,我可以收听密钥,但放大和缩小功能无法正常工作。请帮忙,因为我必须将鼠标指针改为双头箭头,然后听箭头和+和 - 键放大和缩小。

1 个答案:

答案 0 :(得分:2)

您希望根据事件更改WebView的缩放状态,因此您应该更新WebView本身所拥有的zoom属性。从example开始,我根据您的示例添加了以下EventFilter。它似乎按预期工作。

webView.addEventFilter(KeyEvent.KEY_RELEASED, (KeyEvent e) -> {
    if (e.getCode() == KeyCode.ADD || e.getCode() == KeyCode.EQUALS
            || e.getCode() == KeyCode.PLUS) {
        System.out.println("+");
        webView.setZoom(webView.getZoom() * 1.1);
    }
    else if(e.getCode() == KeyCode.SUBTRACT || e.getCode() == KeyCode.MINUS ){
        System.out.println("-");
        webView.setZoom(webView.getZoom() / 1.1);
    }
}); 

image