使用场景生成器的 JavaFX 中的 MVC 模式
我是JavaFX的新手,鉴于我目前的设置,我正在努力创建一个合适的MVC架构。我使用场景生成器单击了一个 UI,并指定了一个 Controller 类。
启动:
public class Portal extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("PortalUI.fxml"));
stage.setTitle("Portal");
stage.setScene(new Scene(root));
stage.show();
}
}
控制器类包含代码的其余部分。
public class AccommodationPortalView implements Initializable {
@Override
public void initialize(URL url, ResourceBundle resources) {
// Work here.
}
}
我的教授要求我进一步分离这个应用程序的关注点和责任。控制器不仅管理状态并与后端通信,而且还更新视图。
我的第一个响应是让 Controller 类成为 View,并为 Controller 和 Model 创建另外两个类。
但是,我不知道如何连接这些部分。例如,我永远不需要实例化视图,因此没有可以传递给控制器的视图实例。接下来,我尝试将它们全部设置为单例,并简单地让 Controller 在运行时获取它们,但这给了我一个错误。
public class Portal extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("PortalUI.fxml"));
stage.setTitle("Portal");
stage.setScene(new Scene(root));
stage.show();
// Controller gets a View and Model instance in initialize();
// Error: Instantiation and Runtime Exception...
PortalController.INSTANCE.initialize();
}
}
如何使用当前配置正确设置 MVC 模式?是否需要不同的体系结构?