Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
I';我试图在javafx上的游戏中添加一个开始屏幕_Java_Javafx - Fatal编程技术网

I';我试图在javafx上的游戏中添加一个开始屏幕

I';我试图在javafx上的游戏中添加一个开始屏幕,java,javafx,Java,Javafx,这有点像源代码。经过多次尝试,我终于做到了这一点,但我仍然犯了很多错误 java.lang.reflect.InvocationTargetException 原因:java.lang.RuntimeException:应用程序启动方法中的异常 原因:java.lang.IllegalArgumentException:子项:添加的重复子项:parent=Grid hgap=0.0,vgap=0.0,alignment=TOP\u LEFT 我甚至不确定我在这里试图实现的目标是朝着正确的方向,还

这有点像源代码。经过多次尝试,我终于做到了这一点,但我仍然犯了很多错误

java.lang.reflect.InvocationTargetException 原因:java.lang.RuntimeException:应用程序启动方法中的异常 原因:java.lang.IllegalArgumentException:子项:添加的重复子项:parent=Grid hgap=0.0,vgap=0.0,alignment=TOP\u LEFT

我甚至不确定我在这里试图实现的目标是朝着正确的方向,还是完全错误的方向

源代码在没有任何附加屏幕的情况下运行游戏。我想在游戏开始前添加一个简单的开始屏幕。一个播放按钮和一个下拉菜单。该按钮会将您发送到游戏,并在下拉菜单中选择一种颜色,然后将其保存以供游戏中使用

@Override
public void start(Stage primaryStage)  {

//MENU ITEMS HERE//

    gameSceneGrid = new GridPane();
    GridPane root = new GridPane();
    root.add(MENU, 0, 0);
    root.add(gameSceneGrid, 0, 1);
    root.getChildren().addAll(gameSceneGrid);
    gameScene = new Scene(root,600,600);

    Button playButton = new Button("Play Game");
    playButton.setOnAction(e -> primaryStage.setScene(gameScene));

    startSceneGrid = new GridPane();
    startSceneGrid.add(playButton,0,1);
    GridPane root0= new GridPane();
    root0.add(MENU,0,0);
    root0.add(startSceneGrid,0,1);
    root0.getChildren().addAll(startSceneGrid);
    startScene = new Scene(root0,200,200);



    primaryStage.setScene(startScene);
    primaryStage.setTitle(StartMeUp.GAME_NAME);
    primaryStage.show();
    loadDefaultSaveFile(primaryStage);
}


void loadDefaultSaveFile(Stage primaryStage)
{
    this.primaryStage = primaryStage;
    System.out.println("Hi");
    InputStream in = getClass().getClassLoader().getResourceAsStream("sample/SampleGame.skb");
    System.out.println(in);
    initializeGame(in);
    System.out.println("Hi");
    setEventFilter();
    System.out.println("Hi");
}
这是游戏屏幕/场景的原始源代码

        gameGrid = new GridPane();
        GridPane root = new GridPane();
        root.add(MENU, 0, 0);
        root.add(gameGrid, 0, 1);
        primaryStage.setTitle(StartMeUp.GAME_NAME);
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
        loadDefaultSaveFile(primaryStage);

发布完整的堆栈跟踪,并指出代码中的哪一行抛出异常。如上所述,您将
gamesceegrid
添加到
root
两次,这几乎肯定是问题的原因。请..我删除了root.getChildren.adAll,它成功了。我怎么也没想到我离得这么近。非常感谢@James\u d堆栈跟踪的重要部分是由以下原因引起的:java.lang.IllegalArgumentException:Children:replicate Children added:parent=Grid hgap=0.0,vgap=0.0,alignment=TOP\u LEFT,它告诉您要同时多次向
父节点添加
节点。堆栈跟踪还将告诉代码的哪一行抛出了错误。如果您不确定如何读取堆栈跟踪,请检查。