我的项目遵循 MVC 模式。为了快速,我将只发布与我的问题相关的代码(不涉及模型)。说明如下。
控制器.java:
public class Controller {
public View myView;
public Controller() {
myView = new myJFrame(this);
}
public void displayViews() {
myView.display();
}
public void closeViews() {
myView.close();
}
}
查看.java:
public abstract class View {
private Controller controller;
public View(Controller controller) {
super();
this.controller = controller;
}
public final Controller getController() {
return controller;
}
public abstract void display();
public abstract void close();
}
myJFrame.java:
public class myJFrame extends View {
private JFrame frame;
private JMenuBar myMenuBar;
public myJFrame(Controller controller) {
super(controller);
buildFrame();
}
private void buildFrame() {
frame = new JFrame();
menuBar = new JMenuBar();
...
}
@Override
public void close() {
frame.dispose();
}
@Override
public void display() {
frame.setVisible(true);
}
}
此代码完美运行。但是,如果我继续添加组件,该buildFrame()
方法很快就会变得庞大,因此我想将其拆分并在新文件中为每个 Swing 组件创建一个新类。
问题是我希望我的组件保留对控制器的访问权限。myFrame
extends View
,因此getController()
可以随时调用该方法。但是当我创建一个单独的文件时不再是这种情况。扩展View
似乎不是一种选择(例如,myMenuBar
已经扩展JMenuBar
了)。
你有什么建议?