Java Swing MVC为所有单独的JPanel(视图)提供一个通用视图

Java Swing MVC为所有单独的JPanel(视图)提供一个通用视图,java,swing,Java,Swing,我正在尝试用JavaSwing编写一个基于ODMVC模式的应用程序 该应用程序有两个功能(“TfwCreator”和“FlightCalculator”) 每个功能都有自己的模型、视图和控制器。 每个功能视图都表示为类扩展JPanel 名为“PhotoMate”的主类也有自己的视图,表示为JFrame(“PhotoMateView”),它将成为子视图(“TfwView”和“CalculatorView”)的公共视图 为了添加每个子视图(JPanel),我使用公共视图的构造函数 假设会有更多的JP

我正在尝试用JavaSwing编写一个基于ODMVC模式的应用程序

该应用程序有两个功能(“TfwCreator”和“FlightCalculator”)

每个功能都有自己的模型、视图和控制器。 每个功能视图都表示为类扩展JPanel

名为“PhotoMate”的主类也有自己的视图,表示为JFrame(“PhotoMateView”),它将成为子视图(“TfwView”和“CalculatorView”)的公共视图

为了添加每个子视图(JPanel),我使用公共视图的构造函数

假设会有更多的JPanel,这似乎是错误的

问题是-将这些面板添加到JFrame(公共视图)的最佳方式是什么? 第二个问题——我应该为公共视图创建单独的控制器吗

代码如下:

PhotoMateView类(通用视图):

主要方法:

package photo_mate;

import tfw_creator.TfwController;
import tfw_creator.TfwModel;
import tfw_creator.TfwView;
import flight_calculator.CalculatorController;
import flight_calculator.CalculatorModel;
import flight_calculator.CalculatorView;

public class PhotoMate {

public static void main(String[] args) 
{
    TfwModel tfwModel = new TfwModel();
    TfwView tfwView = new TfwView();
    TfwController tfwController = new TfwController(tfwView, tfwModel);

    CalculatorModel calcModel = new CalculatorModel();
    CalculatorView calcView = new CalculatorView();
    CalculatorController calcController = new CalculatorController(calcView, calcModel);

    PhotoMateView photoMateView = new PhotoMateView(tfwView, calcView);
}

听起来你应该使用一个可以让你在框架中交换面板的工具。谢谢你的重播,但是我想知道什么是将这些面板发送到JFrame的正确方法。将它们保留为实例变量?如果有10-20个面板,我会怎么做?要切换面板,我将使用JTabbedPane。如果不需要,请不要扩展
JFrame
package photo_mate;

import tfw_creator.TfwController;
import tfw_creator.TfwModel;
import tfw_creator.TfwView;
import flight_calculator.CalculatorController;
import flight_calculator.CalculatorModel;
import flight_calculator.CalculatorView;

public class PhotoMate {

public static void main(String[] args) 
{
    TfwModel tfwModel = new TfwModel();
    TfwView tfwView = new TfwView();
    TfwController tfwController = new TfwController(tfwView, tfwModel);

    CalculatorModel calcModel = new CalculatorModel();
    CalculatorView calcView = new CalculatorView();
    CalculatorController calcController = new CalculatorController(calcView, calcModel);

    PhotoMateView photoMateView = new PhotoMateView(tfwView, calcView);
}