在 macOS 上单击透明舞台时出现问题



信息 :在macOS Mojave上运行的Java 8x64

问题:无法在 javafx 舞台上单击透明背景。

法典:

VBox root = new VBox();
AnchorPane background = new AnchorPane();
background.setPrefSize(400, 400);
background.setMinSize(400, 400);
background.setMaxSize(400, 400);
background.setClip(new 
javafx.scene.shape.Rectangle(400,400));
root.getChildren().add(background);
Scene scene = new Scene(root);
Stage stage = new Stage();
scene.setFill(javafx.scene.paint.Color.TRANSPARENT);
stage.setScene(scene);
stage.setAlwaysOnTop(true); //remove on java7
stage.initStyle(StageStyle.TRANSPARENT);
stage.show();

这只是一个测试代码向您展示,您将无法单击此不可见的视图。在Windows上的java 7x86中相同的代码将起作用(您将能够单击)。

如果您使用的是JavaFX,则可能值得使用传统阶段而不是JFXPANE。您可以使用以下方法创建透明舞台:

Stage s = new Stage(StageStyle.TRANSPARENT);

编辑:您描述的问题显然是一个低级错误。我认为SO上的任何人都不会对此有解决方法。

也许您正在寻找的是mouseTransparentProperty将其设置为 true 将导致节点不接收任何鼠标事件。无论您的组件是否可见,它都可以工作。

最新更新