JavFXで半透明のウィンドウを表示する
JavaFXでこんな感じの半透明ウィンドウを表示する方法です。
public void test() { Stage primaryStage = new Stage(StageStyle.TRANSPARENT); StackPane root = new StackPane(); Scene scene = new Scene(root, 300, 250); scene.setFill(null); Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); BorderPane borderPane = new BorderPane(); borderPane.setStyle("-fx-background-radius: 10;-fx-background-color: rgba(0,0,0,0.3);"); borderPane.setCenter(btn); root.getChildren().add(borderPane); primaryStage.setScene(scene); primaryStage.show(); }
重要なのはこの3箇所です。
Stage primaryStage = new Stage(StageStyle.TRANSPARENT); scene.setFill(null); borderPane.setStyle("-fx-background-radius: 10;-fx-background-color: rgba(0,0,0,0.3);");
まずはStage のコンストラクタで StageStyle に TRANSPARENT を指定してウィンドウ自体を透明にします。
次に、scene に対しては setFill() で null を指定して、こちらも透明にします。
最後に、 borderPane に対してはスタイルシートで背景色のアルファ値に 1 以下の値(この例では 0.3 )を指定することで
borderPane が透けて見えるようになります。