我对JavaFX方面相当新,但到目前为止我已经设法构建了一个接收本地html文件的Java Web浏览器,但是html文件我还包含了pdf的链接。我读到你可以使用getHostServices()在系统上打开默认的pdf应用程序,但我一直得到空指针异常。一切都正确导入。
public class AbsorbBrowser extends Region{
public Application a;
final WebView browser = new WebView();
final WebEngine webEngine = browser.getEngine();
public AbsorbBrowser(){
webEngine.load(getClass().getResource("/resources/test.html").toExternalForm());
getChildren().add(browser);
browser.setOnMouseClicked(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
String str = webEngine.getLocation();
String newStr = str.substring(8);
a.getHostServices().showDocument(newStr);
// hostServices.showDocument(file.getAbsolutePath());
}
});
我拥有它,以便当点击鼠标时它会将该位置(URL)分配给字符串,该字符串将指向该位置:
文件:/// C:/Users/Me/Desktop/Absorb/bin/resources/test.pdf
所以我取一个子字符串并删除前8个字符,只留下C:/目录,然后将该字符串传递给getHostServices()。showDocument();
空指针异常
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
在a.getHostServices().showDocument(newStr);
我尝试使用java文件,但仍无济于事。我要感谢任何帮助或建议,谢谢。