如何在javafx中为两个不同的fxml文件创建两个控制器?

时间:2016-05-14 13:16:51

标签: java javafx

我想在按一下按钮后打开一个新窗口并关闭前一个窗口。 对于这两个窗口,我希望为其提供不同的.fxml文件和控制器类。

我告诉你我是如何设计的:

  1. 从主类firstPanelController.class运行

    public class Main {
        public static void main(String[] args) throws Exception {
            Application.launch(LoginPanelController.class, args);
        }       
    }
    
  2. 在FirstPanel类中创建主要阶段,然后在按钮单击后(goToMainPanel()方法)我想显示具有不同控制器类的新窗口。

    public class FirstPanelController extends Application implements Initializable  {
    
    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("FirstPanel.fxml"));
            Scene scene = new Scene(root);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }       
    }
    
    @Override
    public void initialize(URL location, ResourceBundle resources) {
    }
    
    @FXML
    private void goToMainPanel(ActionEvent event) throws IOException {
        new MainPanelController(Stage stage, Parent root);
    }   
    }
    
  3. 这是MainPanelController.class:

    public class MainPanelController implements Initializable {
    
    private Stage stage;
    private Parent root;    
    
    public MainPanelController(Stage stage, Parent root) throws IOException {
        stage = this.stage;
        root = this.root;
        root = FXMLLoader().load(getClass().getResource("MainPanel.fxml"))
    }
    
    
    @Override
    public void initialize(URL location, ResourceBundle resources) {
            Scene scene = new Scene(root);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            stage.setScene(scene);
            stage.show();
    }
    

    对于fxml文件我正在使用Scene Builder。 firstPanel.fxml中的控制器设置为firstPanel类,而mainPanel.fxml控制器设置为MainPanel类。

    此代码对我不起作用。初始化mainpanel.fxml文件的新控制器时出现问题。

    你看到我的代码出了什么问题吗?也许你知道一些更好的方法,用几个.fxml文件和自己的控制器?

0 个答案:

没有答案