0
我试图创建一个透明的锚定窗格,但您可以在同一时间拖动它。作为JavaFX场景填充特定透明度后无法捕获鼠标事件填充
我将舞台设置为透明,我给场景一个透明的填充,并且我在窗格上设置了OnMousePressed
等。
该程序对我来说行为非常奇怪。透明度有一定的阈值:如果低于此阈值,则该窗格不会捕获鼠标事件。如果在上面,那么它会。
我给你举个例子。当我写这个例子时,我发现这里的阈值在0.5到0.6之间。这意味着:如果我将填充的透明度设置为0.5或更低,窗口将不会被拖动,如果将其设置为0.6或更高,则会是。
我的测试代码:
public class Main extends Application {
Stage primaryStage;
class Delta {
double x, y;
}
final Delta dragDelta = new Delta();
public void start(Stage primaryStage) {
this.primaryStage = primaryStage;
primaryStage.initStyle(StageStyle.TRANSPARENT);
showMain();
}
public void showMain() {
AnchorPane ap = new AnchorPane();
ap.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
dragDelta.x = primaryStage.getX() - mouseEvent.getScreenX();
dragDelta.y = primaryStage.getY() - mouseEvent.getScreenY();
}
});
ap.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
primaryStage.setX(mouseEvent.getScreenX() + dragDelta.x);
primaryStage.setY(mouseEvent.getScreenY() + dragDelta.y);
}
});
Scene scene = new Scene(ap);
scene.setFill(Color.rgb(252, 0, 4, 0.6));
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String args[]) {
launch();
}
}
你能解释或重现此问题?谢谢!
尝试['setPickOnBounds(true)'](https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#setPickOnBounds-boolean-)。如果它不是你正在寻找的,请提供[mcve](http://stackoverflow.com/help/mcve) – jewelsea 2015-04-05 07:53:52
嗨,不,我认为这种方法不是现在的方法。我创建了mcve,以便您可以更好地看到问题。 – user3435407 2015-04-05 11:57:27
你能重现吗?或者它是一个平台问题?如果帖子还不够好,让我知道 – user3435407 2015-04-06 12:56:54