作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个非常简单的程序。我有一个 ImageView,我想向这个 ImageView 触发我创建的 ZoomEvent。在 Javafx 8 中,有 2 个构造函数可用于创建 ZoomEvent。但是听众没有捕捉到事件。
StackPane root = new StackPane();
final ImageView img = new ImageView(url);
img.setOnZoom(new EventHandler<ZoomEvent>() {
@Override
public void handle(ZoomEvent t) {
System.out.println("Zoom!");
}
});
img.setOnZoomStarted(new EventHandler<ZoomEvent>() {
@Override
public void handle(ZoomEvent t) {
System.out.println("Zoom Started!");
}
});
img.setOnZoomFinished(new EventHandler<ZoomEvent>() {
@Override
public void handle(ZoomEvent t) {
System.out.println("Zoom finished!");
}
});
ZoomEvent evt = new ZoomEvent(ZoomEvent.ANY, 200,200,200,200,false,false,false,false,false, false, 5.0,5.0, null);
root.getChildren().add(img);
Scene scene = new Scene(root, 600, 600);
primaryStage.setTitle("Zoom Sample");
primaryStage.setScene(scene);
primaryStage.show();
到目前为止,这是我的代码,我不知道哪里出了问题。没有任何输出。
最佳答案
ZoomEvent.fireEvent(target, event)
触发事件或 stage.fireEvent(event)
.ZoomEvent.ZOOM
,而不是 ZoomEvent.ANY
)。工作样本:
import javafx.application.Application;
import javafx.geometry.Point2D;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.input.ZoomEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Zoom extends Application {
public static void main(String[] args) { launch(args); }
@Override
public void start(Stage stage) {
final ImageView img = new ImageView(
"http://icons.iconarchive.com/icons/kirei-kaze/kikis-delivery-service/256/jiji-icon.png" // image license: License: Free for non-commercial use. The products or characters depicted in these icons are © by Studio Ghibli. Linkback: http://www.iconarchive.com/artist/kirei-kaze.html
);
img.setOnZoom(e -> System.out.println("Zoom!"));
StackPane layout = new StackPane(img);
stage.setScene(new Scene(layout, 600, 600));
stage.show();
Point2D screenCoords = layout.localToScreen(300, 300);
ZoomEvent evt = new ZoomEvent(
ZoomEvent.ZOOM,
300, 300,
screenCoords.getX(), screenCoords.getY(),
false,false,false,false,false, false, 5.0,5.0, null
);
ZoomEvent.fireEvent(img, evt);
}
}
关于event-handling - 如何在 Javafx 8 中触发 Zoomevent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22856296/
本文整理了Java中javafx.scene.input.ZoomEvent.getZoomFactor()方法的一些代码示例,展示了ZoomEvent.getZoomFactor()的具体用法。这些
我正在开发一个非常简单的程序。我有一个 ImageView,我想向这个 ImageView 触发我创建的 ZoomEvent。在 Javafx 8 中,有 2 个构造函数可用于创建 ZoomEvent
我是一名优秀的程序员,十分优秀!