0

アプリケーションを実行しようとすると、次のエラーが発生します。

Caused by: java.lang.NullPointerException
at WebOpenController.<init>(WebOpenController.java:19)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at java.lang.Class.newInstance(Class.java:438)
at sun.reflect.misc.ReflectUtil.newInstance(ReflectUtil.java:51)
at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:923)
at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:967)
at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:216)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:740)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2701)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2521)
... 22 more

行 19 は、このプライベート WebEngine エンジン = view.getEngine(); です。

これはクラスです:

public class WebOpenController implements Initializable {

@FXML
private WebView view;

private String link = "http://google.com";

private WebEngine engine = view.getEngine();

@Override
public void initialize(URL location, ResourceBundle resources) {
    engine.load(link);
}

しかし、私が WebView view = new WebView を実行すると動作しますが、起動時にページを開くことはありません

そして、シーンビルダーで fx-id を設定しました

4

1 に答える 1

5

WebView がインスタンス化された後、Web エンジンを取得する必要があります。fxml ファイルのコンテンツが完全にロードされたinitialize()に呼び出されることに注意してください。これについては、ここで読むことができます。

これはうまくいきます:

@FXML
private WebView view;

private String link = "http://google.com";

private WebEngine engine;

@Override
public void initialize(URL url, ResourceBundle rb) {
    engine = view.getEngine();
    engine.load(link);
}
于 2014-12-14T15:41:35.177 に答える