2012-09-26 48 views
3

我正在MVC體系結構中開發項目。它應該是一個簡單的應用程序來管理一些客戶。MVC體系結構和模式對話框Windows

有MainModel,MainView和MainController類,它們使主窗口顯示客戶表的內容並讓用戶插入,刪除或編輯客戶。

我的問題是,插入和編輯按鈕應該顯示一些對話框窗口,讓用戶插入和編輯一些文本值,我有一些疑慮。

我想問你一些問題:

  • 我應該使用MVC架構的每一個對話窗口?
  • 如果是的話,我已經嘗試過,但我的對話窗口是模態的,所以我的代碼運行模型,運行視圖,但它在視圖中被阻塞,並且它不運行控制器類。我怎麼解決它?

    例如這裏它被擋在了 「新InsertCustomerController ......」 指令:

    CustomerModel customerModel = new CustomerModel(); 
        InsertCustomerView insertCustomerView = new insertCustomerView(customerModel); 
        new InsertCustomerController(insertCustomerView, customerModel); 
    

非常感謝你。

+0

我唯一的想法是定義一個簡單的方法來將我的對話窗口設置爲它們視圖中的模態,並在控制器構造函數中調用它,但我不知道它是否正常。我甚至不知道我是否應該在我的對話窗口中使用MVC ... – JohnQ

+1

如果沒有看到更多的代碼,很難說出發生了什麼。你的InsertCustomerView和InsertCustomerController是什麼?嘗試發佈[SSCCE](http://sscce.org)。我很難理解你的問題,究竟是什麼問題。 –

+1

你不一定需要多個控制器。控制者的目的是將事物路由到視圖和模型。它實際上是從鍵盤到視圖的橋樑。主控制器可以爲其他項目提供服務。另一種選擇是把事情變成現實。創建一個新的控制器實例,並創建模型和視圖,視圖代碼將執行您「陷入」的對話框。 –

回答

0

雖然我無法從您的帖子中完全分辨出來,但我不確定您是否以正確的方式思考MVC。但假設您有一個Customer,CustomerView和CustomerController類。

客戶可以包含與作爲客戶相關的所有業務邏輯 - 因此它可能具有諸如setBalance(int newBalance),getBalance()等方法。等等。

CustomerView類本質上可以是JPanel或JFrame的子類(因爲它看起來像你從問題的標籤中使用Swing)。這個類將代表一個Customer實例。也許你可以有一個私人客戶類變量。這個類的職責應該只包括向客戶實例中包含的用戶顯示數據,並允許他們對其進行修改。

很難說客戶控制器會做什麼,因爲我對你的應用程序一無所知,但它可能包含ActionListeners和那種有助於將輸入和輸出路由到你的不同部分的東西模型和視圖。

我做了一些谷歌搜索,發現你可能想看看一個非常簡單的例子:http://www.austintek.com/mvc/

好運。希望這可以幫助。

2

不管形式如何,您都可以使用observer pattern來保持對話框與應用程序的模型同步。此example使用PropertyChangeListener;其他方法被提及here