2014-02-10 87 views
1

我有疑問。我不知道在哪裏插入模式MVC中的每個eventlistener。將它們插入控制器還是更好地直接在視圖中插入eventlistener是正確的?從視圖eventlistener可以調用控制器來執行某些操作。Model-view-control and swing gui

+1

更好的控制器,從視圖eventlistener可以調用控制器,但有一些混合錯誤的概率。 – JavaFan

回答

1

您的事件監聽器應該位於控制器中。控制器保存視圖的實例,並且您的視圖具有公共方法來設置GUI控件的事件偵聽器(JTextField等)。

示例:您有一個視圖,該視圖具有一個名爲buttonSubmitJButton控件,並且您想要監聽某人與該按鈕進行交互的情況。

查看

public void addSubmitButtonListener(ActionListener listener) { 
    buttonSubmit.addActionListener(listener); 
} 

控制器

public void run() { 
    view.addSubmitButtonListener(new SubmitButtonListener()); 
} 

class SubmitButtonListener implements ActionListener { 

    @Override 
    public void actionPerformed(ActionEvent evt) { 
     // What happens after someone interacts with the button goes in here. 
    } 

} 

SubmitButtonListener類直接進入控制器作爲一個內部類。