【问题标题】:MVC pattern for multiple JButtons多个 JButton 的 MVC 模式
【发布时间】:2014-03-29 20:41:42
【问题描述】:

我应该如何在视图上实现一个带有多个 JButton 的 MVC 控制器?

例如:我有一个开始按钮、停止按钮和许多其他按钮。

我尝试为开始按钮执行此操作,它工作正常,但我如何为停止按钮触发器实现它?

控制器代码:

public MVCAuctionController(Auction a, MVCAuctionView v) {
        auction = a;
        view = v;
        view.addProcessBidsListener(new ProcessBidsController());
        view.addStopProcessListener(new StopBidsController());
    }


    class ProcessBidsController  implements ActionListener
    {
        public void actionPerformed(ActionEvent e) 
        { 
            view.disableProcessButton();
            Thread thread = new Thread (auction);
            thread.start();
        }

    }

addProcessBidsListener - 与 START/Process 按钮相关联,当我单击该按钮时 - 线程开始运行并用数据填充 JTextArea。

现在我的停止按钮应该停止线程。为此,如果我做这样的事情它实际上并没有停止线程:

class ProcessStartController  implements ActionListener
    {
        public void actionPerformed(ActionEvent e) 
        { 
            if(e.getSource() == view.start){            
            view.disableStartButton();
            new Thread (rest).start();
            //thread.start();
            System.out.println("inside action performed of start button");
            view.kitchen.append("Orders to kitchen");
            }
            else if (e.getSource() == view.stop)
            {
                new Thread (rest).interrupt();
            }
        }


    }

【问题讨论】:

  • 看起来您已经开始进行一些不错的设置了。你具体有什么困惑?
  • addProcessBidsListener - 与 START/Process 按钮相关联,当我单击按钮时 - 线程开始运行并用数据填充 JTextArea。

标签: java design-patterns model-view-controller


【解决方案1】:

为每个按钮使用Action,它们是独立的控制器

详情请见How to use Actions

如果你需要的话,你可以在动作和主控制器之间建立某种关系,例如通过某种监听器

【讨论】:

    猜你喜欢
    • 2011-08-24
    • 2022-11-23
    • 1970-01-01
    • 2012-11-27
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    相关资源
    最近更新 更多