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 から完全に独立している必要があるため、このアプローチは有効ではありません。
何か案が?