由于我在应用程序中将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);
}
});
通过此代码,我可以收听密钥,但放大和缩小功能无法正常工作。请帮忙,因为我必须将鼠标指针改为双头箭头,然后听箭头和+和 - 键放大和缩小。
答案 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);
}
});