我是 JavaFX 的新手,考虑到我当前的设置,我正在努力创建一个合适的 MVC 架构。我使用 Scene Builder 一起单击了一个 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();
}
}
Controller 类包含其余的代码。
public class AccommodationPortalView implements Initializable {
@Override
public void initialize(URL url, ResourceBundle resources) {
// Work here.
}
}
我的教授要求我进一步区分这个应用程序的关注点和责任。Controller 不仅管理状态和与后端对话,还更新 View。
我的第一反应是让 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 模式?是否需要不同的架构?