【发布时间】:2019-01-30 03:33:27
【问题描述】:
如果您在透明像素上单击或拖动,JavaFx ImageView 不会触发诸如按下或拖动之类的鼠标事件,是否有办法解决此问题并从透明区域检测鼠标事件?
使用 ImageView 命名视图,我想用鼠标拖动事件移动它 所以我写了这段代码
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application{
double initMx, initMy,initX, initY;
@Override
public void start(Stage ps) throws Exception {
StackPane pane = new StackPane();
Image im = new Image("0.png");
ImageView view = new ImageView(im);
double fact = im.getWidth() / im.getHeight();
view.setFitHeight(300);
view.setFitWidth(300 * fact);
view.setOnMousePressed(e->{
initX = view.getTranslateX();
initY = view.getTranslateY();
initMx = e.getSceneX();
initMy = e.getSceneY();
});
view.setOnMouseDragged(e->{
double dx = initMx - e.getSceneX();
double dy = initMy - e.getSceneY();
double nx = initX - dx;
double ny = initY - dy;
view.setTranslateX(nx);
view.setTranslateY(ny);
});
pane.getChildren().add(view);
Scene scene = new Scene(pane, 500, 500);
ps.setScene(scene);
ps.show();
}
public static void main(String[] args) {
launch(args);
}
}
到目前为止,这段代码运行良好, 但如果你按下或拖动某个地方,比如他的耳朵下面(或任何透明的地方),什么都不会发生!如何解决这个问题!
【问题讨论】:
标签: javafx