この例のCSSを使用して、私が行ったように古い例を見つけた人には、ここで答えを投稿します。私はシーンの塗りつぶしをJavaでは透過的に設定しましたが、CSSではできません(これはわかりませんが、それは問題ありません)。
// initialize the stage
primaryStage.setTitle("Modal Confirm Example");
final WebView webView = new WebView(); webView.getEngine().load("http://docs.oracle.com/javafx/");
primaryStage.setScene(new Scene(webView));
primaryStage.show();
// initialize the confirmation dialog
final Stage util = new Stage(StageStyle.TRANSPARENT);
util.initModality(Modality.APPLICATION_MODAL);
util.initOwner(primaryStage);
HBox hbox = new HBox();
Pane pane = new Pane(hbox);
Scene scene = new Scene(pane);
Label label = new Label("Will you like this page?");
Button yesButton = new Button("Yes");
Button noButton = new Button("No");
hbox.getChildren().addAll(label, yesButton, noButton);
yesButton.setOnAction(ae -> {
System.out.println("Liked: " + webView.getEngine().getTitle());
primaryStage.getScene().getRoot().setEffect(null);
util.close();
});
noButton.setOnAction(ae -> {
System.out.println("Disliked: " + webView.getEngine().getTitle());
primaryStage.getScene().getRoot().setEffect(null);
util.close();
});
scene.setFill(Color.TRANSPARENT);
scene.getStylesheets().add(Machine.class.getResource("modal-dialog.css").toExternalForm());
pane.getStyleClass().add("modal-dialog-glass");
hbox.getStyleClass().add("modal-dialog-content");
util.setScene(scene);
// show the confirmation dialog each time a new page is loaded.
webView.getEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override public void changed(ObservableValue<? extends Worker.State> observableValue, Worker.State state, Worker.State newState) {
if (newState.equals(Worker.State.SUCCEEDED)) {
primaryStage.getScene().getRoot().setEffect(new BoxBlur());
util.show();
util.toFront();
}
}
});
これは、質問にリンクされている例(プラス機能的でないルートクラス)からのものです。
.root {
-fx-background-color: transparent;
}
.modal-dialog-glass {
-fx-effect: dropshadow(three-pass-box, derive(cadetblue, -20%), 10, 0, 4, 4);
-fx-background-color: derive(cadetblue, -20%);
-fx-background-insets: 12;
-fx-background-radius: 6;
}
.modal-dialog-content {
-fx-padding: 20;
-fx-spacing: 10;
-fx-alignment: center;
-fx-font-size: 20;
-fx-background-color: linear-gradient(to bottom, derive(cadetblue, 20%), cadetblue);
-fx-border-color: derive(cadetblue, -20%);
-fx-border-width: 5;
-fx-background-insets: 12;
-fx-border-insets: 10;
-fx-border-radius: 6;
-fx-background-radius: 6;
}
これは廃止予定のビルダーだけですか?それらをコンストラクタへの呼び出しで置き換え、通常の方法でプロパティを設定します。 –
@ James_D、以前はビルダーを使用していませんでしたし、コードを読み込もうとしています。ペインが "modal-dialog-glass"のスタイルクラスを取得し、hboxが "modal-dialog-content"のスタイルクラスを取得するように見えますが、シーンコンストラクタの最後には透明色があります?私はシーンを透明にする方法を考え出していない。 –
@James_D、nm1私はそれをすることができるとは思わなかったが、私はそれを得た。どうも。 –