繁体   English   中英

JavaFX WebView引发异常

[英]JavaFX WebView throwing an Exception

我将JavaFX WebView用作“聊天容器”,用于接收消息。

每当出现新消息时,我都会打电话给:

engine.executeScript("window.scrollTo(0, document.body.scrollHeight);");

(我也有一个if-check,因此如果用户向上滚动,则不会执行该行)

但是,每当滚动条不可见时,此行似乎都会引起异常,因为滚动条显然是延迟初始化的。

java.lang.NullPointerException
    at com.sun.javafx.webkit.theme.ScrollBarThemeImpl.getThumb(ScrollBarThemeImpl.java:400)
    at com.sun.javafx.webkit.theme.ScrollBarThemeImpl.thumbPosition(ScrollBarThemeImpl.java:284)
    at com.sun.javafx.webkit.theme.ScrollBarThemeImpl.getThumbPosition(ScrollBarThemeImpl.java:380)
    at com.sun.webkit.WebPage.twkExecuteScript(Native Method)
    at com.sun.webkit.WebPage.executeScript(WebPage.java:1427)
    at javafx.scene.web.WebEngine.executeScript(WebEngine.java:948)

我试图在JavaScript中添加另一个if-check: document.body.scrollHeight > document.body.clientHeight; 但这并不能解决问题。

任何人都有想法如何摆脱异常(提交错误报告:)除外?

简短答案

if (scene != null
    && scene.getWindow() != null
        && scene.getWindow().isShowing()) {
  engine.executeScript("window.scrollTo(0, document.body.scrollHeight);");
}

更长的答案

失败是因为尚未设置WebView的ScrollBar的外观。 为了避免这种情况,

  • WebView必须附加到场景
  • 场景必须附加到窗口
  • 该窗口必须至少显示一次

或者,更具体而言:

  • WebView必须附加到场景
  • WebView.applyCss()必须已被调用

有一个错误报告 ,很遗憾,该报告已关闭且未修复

我提交了一个新的错误报告(因为不可能对现有错误进行评论-.-),并向他们发送了一个示例来重现它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM