2017-02-15 7 views
0

javaFXからApplicationオブジェクトを作成することは可能でしょうか?JavaFXアプリケーションオブジェクトを作成できますか?

public class Constructor 
{ 
    public Constructor() 
    { 
     Application a = new Application() 
     { 
      @Override 
      public void start(Stage window) throws Exception 
      { 

      } 
     }; 
     a.launch(); 
    } 
} 

私はそれを実行しようとすると、それは現在、私にこれを与える:

Exception in thread "main" java.lang.RuntimeException: Error: class net.whiteautumn.lightcast.Constructor is not a subclass of javafx.application.Application

これ、私は推測、Applicationを延長していないクラスConstructorによって引き起こされます。 これを回避するには、JavaFXアプリケーションを起動する唯一の方法はありますか?

EDIT: 私はjavaFXアプリケーションを起動する方法を知っています。私がアプリケーションを作り、それをオブジェクトに入れたいと思うもの。これは可能かどうか?

+0

ここをクリックhttps://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html –

答えて

0

Application.launch()は静的メソッドなので、a.launch()Application.launch()に相当します。これは、クラスを呼び出すクラスのアプリケーションを起動しようとします。つまり、Constructorクラスです。

それを行うための正しい方法は次のとおりです。

private static class MyApp extends Application 
{ 
    @Override 
    public void start(Stage window) throws Exception 
    { 

    } 
}; 

Application.launch(MyApp.class, null); 
0

あなたはJavaFXのツールキットを初期化するアプリケーションを拡張する必要があります。フォームを表示するための開始メソッドをオーバーライドします(JavaFxステージ)。明らかに、あなたはアプリケーションを実行するための主な静的メソッドが必要です。

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.layout.Pane; 
import javafx.scene.shape.Circle; 
import javafx.scene.shape.CircleBuilder; 
import javafx.stage.Stage; 

public class Constrcutor extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     primaryStage.setTitle("JavaFX Abacus"); 
     Pane root = new Pane(); 

     Circle circle = CircleBuilder.create() 
      .radius(20) 
      .centerX(20) 
      .centerY(20) 
      .build(); 
     root.getChildren().add(circle); 

     primaryStage.setScene(new Scene(root, 400, 400)); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
関連する問題