Я не уверен, что полностью понимаю вашу проблему, поэтому поправьте меня, если я ошибаюсь.Вы хотите, чтобы все, кроме веб-просмотра, было прозрачным?Чтобы более или менее скопировать, вставьте комментарий из другого поста, здесь я (мы) хочу иметь минимальный, полный и проверяемый пример, демонстрирующий проблему.Вы также должны помнить, чтобы проверить, был ли вопрос уже задан и дан ответ, прежде чем задавать свой собственный вопрос.
Теперь, когда я понял это, вот пример, где вы можете увидеть панель стека с чернымфон и веб-просмотр с белым фоном.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.scene.layout.Background;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
WebView v = new WebView();
v.setOpacity(1); // 0 = fully transparent, 1 = fully visible.
v.setPrefWidth(100);
v.setMaxWidth(100);
v.setMaxHeight(100);
v.setPrefHeight(100);
v.setStyle("-fx-background-color:black;");
StackPane root = new StackPane();
root.getChildren().add(v);
root.setStyle("-fx-background-color:black;");
/*
* Remove the setStyle above, and use either one of these to only have the webview
* visible. root.setBackground(Background.EMPTY);
* root.setStyle("-fx-background-color:TRANSPARENT;");
*/
Scene scene = new Scene(root, 300, 250);
scene.setFill(Color.TRANSPARENT);
primaryStage.setScene(scene);
primaryStage.initStyle(StageStyle.TRANSPARENT);
primaryStage.show();
}
}
Если вы удалите строку:
root.setStyle("-fx-background-color:black;");
и замените ее одной из строк, которые в данный момент находятся в комментариях, то теперь вы увидите только веб-просмотр:
/*
* Remove the setStyle above, and use either one of these to only have the webview
* visible.
* root.setBackground(Background.EMPTY);
* root.setStyle("-fx-background-color:TRANSPARENT;");
*/
И, конечно, вы также можете установить прозрачность для реального веб-просмотра, если вы хотите сделать это по какой-то причине:
v.setOpacity(0); /*0.0 Fully Transparent - 1.0 Fully Visible*/
Обратите внимание, что для этого мне нужно было установить StageStyleк прозрачному, и, к сожалению, я не уверен, возможно ли это сделать любым другим способом.Может быть, кто-то еще может оставить комментарии, если это возможно или нет.
Надеюсь, это ответит на ваш вопрос.