多个JButton的MVC模式

时间:2014-03-29 20:41:42

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

如何在视图上实现具有多个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();
            }
        }


    }

1 个答案:

答案 0 :(得分:2)

对每个按钮使用Action,它们是自包含的控制器

有关详细信息,请参阅How to use Actions

然后,您可以根据需要设置Actions和主控制器之间的某种关系,例如通过某种类型的监听器