IAE*_*IAE 14 java architecture model-view-controller javafx
我是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();
}
}
Run Code Online (Sandbox Code Playgroud)
Controller类包含其余代码.
public class AccommodationPortalView implements Initializable {
@Override
public void initialize(URL url, ResourceBundle resources) {
// Work here.
}
}
Run Code Online (Sandbox Code Playgroud)
我的教授要求我进一步分离这个申请的关注点和责任.Controller不仅可以管理状态并与后端通信,还可以更新View.
我的第一个回应是让Controller类成为View并为Controller和Model创建另外两个类.
但是,我对如何连接这些部件感到茫然.我永远不需要实例化View,因此没有可以传递给我的Controller的View实例.接下来,我试着让它们成为所有单例,只是让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();
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用当前配置正确设置MVC模式?是否需要不同的架构?
Ulu*_*Biy 23
您的,
- View是StageJavaFX平台在启动时提供的主要功能.此阶段具有唯一Scene(您已创建并设置),而该阶段又具有父节点内容root(您的变量).此root节点由FXMLLoader设置,表示"PortalUI.fxml"文件中定义的布局/节点结构.
换句话说,Stage -> Scene -> PortalUI.fxml(root)将定义视图部分.
- Controller是实现的类,Initializable您在PortalUI.fxml文件中使用fx:controller =""属性指定的类.你在那里指定的类(我猜想是PortalController)将被FXMLLoader创建并调用它的initialize()方法.即,在加载PortalUI.fxml文件时将创建Controller,因此您无需自己创建和初始化它.要从FXMLLoader 获取控制器的创建/初始化实例,请查看Accessing FXML控制器类.
- Model是控制器存储和管理的底层数据结构.它可以是代表"数据"的任何东西.例如,Person,PortalInfo等类.
| 归档时间: |
|
| 查看次数: |
19089 次 |
| 最近记录: |