小编tjr*_*age的帖子

在MVC架构中公开Java组件(如JButton)的最佳方法是什么?

我目前正在用Java编写Blackjack应用程序,它需要用MVC架构编写.我的所有模型,视图和控制器都完全编码,一切都很完美.但是,我想知道将侦听器附加到组件的最佳方法是什么(例如,JButton).

我当前的设计声明视图中需要侦听器作为公共final的所有组件.然后它将视图传递给控制器​​.从那里,控制器具有完全的统治权来访问组件并添加动作侦听器.代码示例:

public class View extends JFrame {
    public final JButton myBtn1 = new JButton("Button 1");
    public final JButton myBtn2 = new JButton("Button 2");

    public View() {
        //constructor code here....
    }
}

public class Controller {
    private Model myModel;
    private View myView;

    public Controller(Model m, View v) {
        myModel = m;
        myView = v;

        //now add listeners to components...

        myView.myBtn1.addActionListener(new MyActionListener1());
        myView.myBtn2.addActionListener(new MyActionListener2());
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我的一个朋友已经宣布他的所有JButton都具有私有范围,然后在视图中使用公共方法向其各自的组件添加动作侦听器.对我来说,这似乎是浪费时间,只会增加不必要的代码.代码示例:

public class View extends JFrame {
    private JButton myBtn1 = new JButton("Button 1");
    private …
Run Code Online (Sandbox Code Playgroud)

java model-view-controller swing private public

3
推荐指数
2
解决办法
1250
查看次数

标签 统计

java ×1

model-view-controller ×1

private ×1

public ×1

swing ×1