私は次のコードを試して、Viewer
というJavaFxアプリケーションを、launch
というメソッドを直接呼び出さずに起動させました。なぜJavaFxアプリケーションを独自のクラスから起動する必要がありますか?
Exception in thread "main" java.lang.RuntimeException: Error: class Freelance.Test is not a subclass of javafx.application.Application
at javafx.application.Application.launch(Application.java:254)
at Freelance.Test.main(Test.java:8)
:私は次のエラーを取得する
package Freelance;
public class Test
{
public static void main(String[] args)
{
Viewer.launch();
}
}
を:私はそうのような別のクラスからこれを起動しようとすると、今
package Freelance;
public class Viewer extends Application
{
private WebEngine myWebEngine;
public void start(Stage stage)
{
stage.setTitle("Browser");
WebView myBrowser = new WebView();
myWebEngine = myBrowser.getEngine();
myWebEngine.getLoadWorker().exceptionProperty().addListener(new ChangeListener<Throwable>()
{
@Override
public void changed(ObservableValue<? extends Throwable> observableValue, Throwable oldException,
Throwable exception)
{
System.out.println("WebView encountered an exception loading a page: " + exception);
}
});
myBrowser.setPrefSize(1600, 900);
BorderPane root = new BorderPane();
root.setCenter(myBrowser);
stage.setScene(new Scene(root));
stage.show();
myWebEngine.load("http://www.google.com/");
}
public static void run()
{
launch("");
}
}
:ここ
は、JavaFXのクラスですしかし、Test
クラスを次のように変更した場合:
package Freelance;
public class Test
{
public static void main(String[] args)
{
Viewer.run(); // Changed from using "launch()" to "run()"
}
}
次に、正しく動作して起動します。
私はちょうどこれがなぜ起こるのか、あるいは間違ったフォーマットでコードを書いているのか不思議でした。
ありがとうございます。
docuはかなり役に立ちます。 'launch()'メソッドを使う正しい方法について説明しています。 [ここ](https://docs.oracle.com/javase/8/javafx/api/javafx/application/Application)を確認してください。html) – AntJavaDev
ところで、 'args'を空の文字列や空の配列ではなく' launch'メソッドに渡すべきです。 JavaFXはそれらを[アプリケーションパラメータ](http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html#getParameters--)で利用できるようにします。 – VGR