使用fxml控制器更改场景的最佳方法是什么?

时间:2014-05-10 14:32:17

标签: javafx

我有两个类--menu和--game他们都使用fxml文件来加载他们的场景我在菜单中有一个按钮我想要如果用户点击按钮,我的菜单中的阶段,传递到游戏并更改场景到游戏类的新场景

菜单:

    public class menu extends application{

     ....
    public void start(Stage stage) throws IOException{     
    StackPane loader = FXMLLoader.load(getClass().getResource("layout/startUp.fxml"));
    stage.setScene(new Scene(loader));
    stage.show();//show stage
   }
    ....
   }

游戏:

    public class game{
        public void start(Stage stage) throws IOException{

                StackPane root = FXMLLoader.load(getClass().getResource("layout/game.fxml"));
                Scene scene = new Scene(root);
                stage.setScene(scene);
            }
         }

菜单控制器:

public class menuController implements Initializable{

@FXML Button playButton;


@Override
public void initialize(URL location, ResourceBundle resources) {
    playButton.setOnAction(new EventHandler<ActionEvent>() {

         @Override
         public void handle(ActionEvent event) {
            /*
             now i want to do something like this
             */
          game g = new game();
          g.start(stage);//this stage is from menu
         }
        });

}

任何想法?提前感谢

1 个答案:

答案 0 :(得分:2)

我解决了我的问题 我的错误是:

我在我的fxml文件中使用fx:controller设置我的控制器我删除了因为我需要将阶段传递给我的menuController,我在菜单类的start方法中使用setController方法设置控制器并给{{1 to setController方法