当前位置: 首页 > 知识库问答 >
问题:

JavaFX中WebView中的透明背景

林涵映
2023-03-14

我需要在父背景模式上显示我的webview内容。有没有简单的方法来做到这一点?

共有3个答案

麻宜春
2023-03-14

如果你有明亮的背景,使用

webView.setBlendMode(BlendMode.DARKEN);

当背景变暗时

webView.setBlendMode(BlendMode.LIGHTEN);

这可能会在一段时间内得到修复,此功能是在JavaFX错误跟踪器#RT-25004上请求的

东门令
2023-03-14

Webview transparent我在这里找到了一个很好的解决方案:https://javafx-jira.kenai.com/browse/RT-29186阅读评论Harry Hur

    import java.lang.reflect.Field;
    import javafx.application.Application;
    import javafx.beans.value.ChangeListener;
    import javafx.beans.value.ObservableValue; 
    import javafx.scene.Scene;
    import javafx.scene.web.WebEngine;
    import javafx.scene.web.WebView;
    import javafx.stage.Stage;
    import javafx.stage.StageStyle; 
    import org.w3c.dom.Document; `

    public class TestTranparentApps extends Application { 

    @Override
    public void start(Stage primaryStage) {
        new WebPage(primaryStage);
        primaryStage.show(); 
    } 

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

    class WebPage{

        WebView webview;
        WebEngine webengine;
        public WebPage(Stage mainstage){
            webview = new WebView();
            webengine = webview.getEngine();

            Scene scene = new Scene(webview);
            scene.setFill(null);

            mainstage.setScene(scene);
            mainstage.initStyle(StageStyle.TRANSPARENT);
            mainstage.setWidth(700);
            mainstage.setHeight(100);

            webengine.documentProperty().addListener(new DocListener());
            webengine.loadContent("<body style='background : rgba(0,0,0,0);font-size: 70px;text-align:center;'>Test Transparent</body>");
        }

        class DocListener implements ChangeListener<Document>{  
            @Override
            public void changed(ObservableValue<? extends Document> observable, Document oldValue, Document newValue) {
                try {

                    // Use reflection to retrieve the WebEngine's private 'page' field. 
                    Field f = webengine.getClass().getDeclaredField("page"); 
                    f.setAccessible(true); 
                    com.sun.webkit.WebPage page = (com.sun.webkit.WebPage) f.get(webengine);  
                    page.setBackgroundColor((new java.awt.Color(0, 0, 0, 0)).getRGB()); 

                } catch (Exception e) {
                }

            }
        }  
    } 
} 
轩辕修能
2023-03-14

这个可能有用

final com.sun.webkit.WebPage webPage = com.sun.javafx.webkit.Accessor.getPageFor(engine);
webPage.setBackgroundColor(0);
 类似资料:
  • 我的fxml文件中只有一个带有ImageView的AnchorPane,其中包含png图像 我到处找了,但找不到任何解决办法,任何帮助都不胜感激。谢谢

  • 最近,我在Android系统上实现了基于网络的应用程序。我想让webview的背景颜色透明。 搜索时,我发现Webview有两行代码。 它适用于Android版本4.0~4.3,但不适用于4.4 KITKAT。 我只有白色背景。另外,当我设置背景色黑色时,如下所示: 我还看到了白色的背景。有人知道解决办法吗?

  • 问题内容: 有没有一种方法可以使用Tkinter在Python 3.x中创建“加载屏幕”?我的意思是像Adobe Photoshop的加载屏幕一样,具有透明度等。我设法摆脱已经使用的框架边框: 但是,如果我这样做: 图像显示正常,但背景为灰色而不是透明。 有没有一种方法可以增加窗口的透明度,但仍可以正确显示图像? 问题答案: 在tkinter中,没有跨平台的方法可以使背景透明。

  • 通过使用启用透明背景功能,可以使用自定义图片作为背景。 controller.setTransparentBackground( true );

  • 如何删除Android对话框中的黑色背景。这张照片显示了问题所在。

  • 我必须用浮动提示标签制作一个textinputlayout,这需要有一个白色的背景。有些类似于这个-- 预期设计: 但到目前为止,我所能做的就是: