我正在根据 MVC 模式开发我的 GUI:
-GUIview:Swing 组件(JFrame 和几个 JTables)。-GUIcontroller:侦听器(在此处添加,并在此处在内部类中定义) -GUImodel:修改和存储数据,触发更改事件。
模型中的更改通过控制器(而不是直接)传递给视图,就像在这个例子中一样。
我还为 View 类中包含的不同 JTable 编写了不同的自定义 JTableModel(扩展 AbstractTableModel)。所有的 JTableModel 都在“GUImodel”包内的不同类中定义。每个 JTableModel 都定义了一个 ArrayList 和一些操作 ArrayList 的方法。
根据 MVC 指南,模型应该对视图一无所知。其实main()方法的定义如下:
GUImodel model = new GUImodel();
GUIcontroller controller = new GUIcontroller();
GUIview view = new GUIview(controller, model);
controller.addView(view);
controller.addModel(model);
view.setVisible(true);
controller.addControllerListerners();
我的问题是:当我在 GUImodel 中执行一个方法时(例如,因为按下了 JButton 并且我需要从外部文件加载数据),我需要修改一些 JTableModels(将数据/行添加到它的 ArrayList)并获得反映在 JTable 中的更改。我的第一个想法是:
ArrayList newArrayList = fileLoader(filePath); //create ArrayList and load info
guiView.getTable1Model().updateArrayList(newArrayList); //update JTableModel ArrayList
然而,这种方法是无效的,因为 GUImodel 应该完全独立于 GUIview。
任何想法?