信息 :在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 将导致节点不接收任何鼠标事件。无论您的组件是否可见,它都可以工作。