2017-01-07 5 views
0

私は単純なjavaFxアプリケーションを設計しました。私は分離しようと、それ私が得るすべてのインスタンスを作成するときにソロ作品が、実行中:アプリケーションを拡張するAクラスのインスタンスを作成するには

at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
... 1 more 

私のコード

import javafx.application.Application; 
import javafx.stage.Stage; 

public class Demo 
{ 
    public static void main(String[] args) 
    { 

     Demos dm = new Demos(); 

    } 
} 

class Demos extends Application { 
    private String args; 
    private Stage stage; 

    public Demos() 
    { 
     main(args); 
     start(stage); 

    } 

    public void main(String args) 
    { 
     this.args=args; 
     launch(this.args); 

    } 

    @Override 
    public void start(Stage stage) 
    { 
     this.stage=stage; 
     this.stage.setTitle("Simple JavaFX Application"); 
     this.stage.setResizable(false); 
     this.stage.show(); 
    } 

} 
+2

自分でFXアプリケーションを構築していません。その代わりに 'launch'メソッドを使います。 – user1803551

答えて

0

Application.launchpublicするlauchedされるApplicationクラスが必要です。これはあなたのDemosクラスのケースではありません。

追加メモ

private String args; 
private Stage stage; 

public Demos() 
{ 
    main(args); 
    ... 
} 

public void main(String args) 
{ 
    this.args=args; 
    ... 
} 

ただ、常にargs残りnullになりますこれは、それ自体にargsの初期値を割り当てます。


Application.launchApplicationインスタンス自体を作成static方法です。このフォームをインスタンスから呼び出すことはほとんど意味がありません。

あなたはApplication.launchApplicationクラスを渡し、特定のApplicationを起動したい場合は、次の

public static void main(String[] args) { 
    Application.launch(Demos.class); 
} 
public Demos extends Application { 
    private Stage stage; 

    public Demos(){ 
    } 

    @Override 
    public void start(Stage stage) { 
     this.stage=stage; 
     this.stage.setTitle("Simple JavaFX Application"); 
     this.stage.setResizable(false); 
     this.stage.show(); 
    } 

} 
関連する問題