我想在按一下按钮后打开一个新窗口并关闭前一个窗口。 对于这两个窗口,我希望为其提供不同的.fxml文件和控制器类。
我告诉你我是如何设计的:
从主类firstPanelController.class运行
public class Main {
public static void main(String[] args) throws Exception {
Application.launch(LoginPanelController.class, args);
}
}
在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);
}
}
这是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文件和自己的控制器?