2014-11-17 2 views
2

Я видел это много раз, но никаких четких ответов. Кроме того, все ответы были pre-JavaFX 8, и к настоящему моменту должно быть решение. Мне нужен цвет фона для прозрачного.Изменение цвета фона WebView JavaFX

+0

Ответы должны быть в ответах. Я отредактировал ваше решение самостоятельно. – k0pernikus

ответ

2

Hava взгляд на этот вопрос JIRA. https://bugs.openjdk.java.net/browse/JDK-8116513 В конце комментария - это описание взлома, которое может быть полезно для вас, и не забудьте проголосовать за https://bugs.openjdk.java.net/browse/JDK-8090547 , чтобы получить окончательное исправление.

+0

Не могли бы вы опубликовать соответствующий фрагмент кода, на всякий случай, когда ссылка замирает? –

+0

Спасибо! Я проголосовал, и сейчас я собираюсь сделать этот код. – user2130057

+0

@mipa Я не понимаю, почему мне нужно взломать решение, если оно говорит, что проблема разрешена на связанной с вами веб-странице. В нем говорится, что есть официальное решение в 1.8. Где официальное решение? – user2130057

0

Это решение было получено благодаря Harry Hurr.

Мне пришлось изменить, как две мелочи, чтобы заставить его работать. Если вы все еще не работаете, вы, вероятно, импортировали неправильные вещи.

//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); 
     } 
    } 
} 
Смежные вопросы