2017-12-03 9 views
0

javaFXを使用してアプリケーションを作成しようとしています。このクラスはアプリケーションを拡張します。 エラーメッセージは、私のサブクラスコンストラクタに何か問題があると考えていますが、関連するすべてのパラメータ(none)を持つs​​uper(Application)を呼び出します。サブクラスのJavaFXアプリケーションコンストラクタ

public class SameGame extends Application { 
private Button[][] board; 
public Button[][] getBoard() { 
    return board; 
} 
public SameGame(int BoardSize){ 
    super(); 
    board = new Button[BoardSize][BoardSize]; //only make squares 
    for (int x = 0; x < getBoard().length; x++) { 
     for (int y = 0; y < getBoard()[x].length; y++) { 
      board[x][y] = new Button(); 
     } 
    } 
} 
public void start(Stage primaryStage) { 
    GridPane gridpane = new GridPane(); 
    Scene scene = new Scene(gridpane); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
    SameGame sameGame = new SameGame(5); 

    for (int x = 0; x < getBoard().length; x++) { 
     for (int y = 0; y < getBoard()[x].length; y++) { 
      gridpane.add(getBoard()[x][y], x, y); 
     } 
    } 
} 

public static void main(String[] args) { 
    Application.launch(args); 
} 
} 

と相続人の例外

Exception in Application constructor 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) 
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) 
Caused by: java.lang.RuntimeException: Unable to construct Application instance: class SameGame 
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:907) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: java.lang.NoSuchMethodException: SameGame.<init>() 
    at java.lang.Class.getConstructor0(Class.java:3082) 
    at java.lang.Class.getConstructor(Class.java:1825) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$160(LauncherImpl.java:818) 
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(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$147(WinApplication.java:177) 
    ... 1 more 
Exception running application SameGame 

Process finished with exit code 1 

私は答えのそこでのを知って、私はちょうど

+1

を実行したときBoardSizeの入力に、cmd引数から来る必要がありますか? –

+0

mmmおそらくコマンドラインのargsから来るはずです。 –

+0

'launch()'メソッドは、引数なしのコンストラクタを(リフレクションを介して)呼び出して、 'Application'クラスのインスタンスを作成します。引数のないコンストラクタがないので、エラーが発生します。 @DawoodibnKareemが指摘しているように、あなたの現在のコードはあまり意味をなさない... –

答えて

0

はそれを得たそれを見つけるために十分を知りません!同じゲームのための コンストラクタは引数を持っているはずの、プログラムは、それが起動時にプログラムがBoardSize` `の右側の値を選択することが期待されている方法

public SameGame(){ 
     int BoardSize = Integer.parseInt(this.getParameters().getRaw().get(0)); 

     board = new Button[BoardSize][BoardSize]; //get size of board fro cmd args 
     for (int x = 0; x < getBoard().length; x++) { 
      for (int y = 0; y < getBoard()[x].length; y++) { 
       board[x][y] = new Button(); 
      } 
     } 

    } 
関連する問題