更改WebView JavaFX的背景色

更改WebView JavaFX的背景色,java,javafx,Java,Javafx,这个问题我已经问过很多次了,但没有明确的答案。此外,所有答案都是JavaFX8之前的版本,现在必须有一个解决方案。我需要透明的背景色。看看这个JIRA问题。 在评论的最后是一个可能对你有帮助的黑客的描述,别忘了投你的票 要最终解决此问题。此解决方案来自 为了让它发挥作用,我不得不做出两个小小的改变。如果你的电脑仍然无法正常工作,那么你可能输入了错误的东西 //put this line before you loadContent webEngine.documentProperty().add

这个问题我已经问过很多次了,但没有明确的答案。此外,所有答案都是JavaFX8之前的版本,现在必须有一个解决方案。我需要透明的背景色。

看看这个JIRA问题。 在评论的最后是一个可能对你有帮助的黑客的描述,别忘了投你的票
要最终解决此问题。

此解决方案来自

为了让它发挥作用,我不得不做出两个小小的改变。如果你的电脑仍然无法正常工作,那么你可能输入了错误的东西

//put this line before you loadContent
webEngine.documentProperty().addListener(new WebDocumentListener(webEngine));

class WebDocumentListener implements ChangeListener<Document> { 
    private final WebEngine webEngine; 

    public WebDocumentListener(WebEngine webEngine) { 
        this.webEngine = webEngine; 
    } 

    @Override 
    public void changed(ObservableValue<? extends Document> arg0, 
            Document arg1, Document arg2) { 
        try { 
            // Use reflection to retrieve the WebEngine's private 'page' field. 
            Field f = webEngine.getClass().getDeclaredField("page"); 
            f.setAccessible(true); 
            WebPage page = (WebPage) f.get(webEngine); 
            // Set the background color of the page to be transparent. 
            page.setBackgroundColor((new java.awt.Color(0, 0, 0, 0)).getRGB()); 
        } catch (Exception e) { 
            System.out.println("Error: " + e);
        } 
    } 
}
//在加载内容之前放置此行
webEngine.documentProperty().addListener(新的WebDocumentListener(webEngine));
类WebDocumentListener实现ChangeListener{
私有最终网络引擎;
公共WebDocumentListener(WebEngine WebEngine){
this.webEngine=webEngine;
} 
@凌驾

更改公众假期(你能发布相关的代码吗,以防链接死掉?谢谢!我投票了,现在我要尝试这些代码。@mipa我不明白为什么我需要破解一个解决方案,如果它说问题在你链接的网页上得到了解决。它说在1.8中有一个官方解决方案。官方解决方案在哪里?RT-29186在哪里据我所知,这是RT-25004的先决条件。因此,完整的解决方案尚未实施。我也不知道这是否已经进入当前版本。因此,请尝试一下。答案应该在答案中。我已将您的解决方案编辑为自己的解决方案。