2011-10-22 144 views
0

在我的應用程序中,用戶可以爲幾個參數選擇「分佈類型」,然後創建Graph並將其顯示給他。有3種不同類型的這些分佈,每種分佈都有自己的參數(如alpha,beta,概率等)。每個參數可以具有這些分佈中的任何一個。Java:從GUI獲取數值

這裏是要清楚的截圖中,我嘗試來形容:

screenshot http://i52.tinypic.com/29cs11h.jpg

分發選項包含在CardLayout,是由組合框控制。

當用戶按下按鈕時,我需要實例化適當的域對象的分佈。現在,我只是將ComboBox項目(這是枚舉)和CardLayouted面板傳遞給工廠,選擇適當的子面板並實例化正確的對象。但是傳遞gui對象似乎是錯誤的,也使得工廠在任何其他情況下都沒有用處。

但我想不出一個更好的方法來實例化正確的對象。也許只是一個想法:

  • 讓CardLayouted面板決定哪個面板ontop的,並應要求提供實例 正確的對象。我不需要這個工廠。但是gui對象可以做這種邏輯嗎?我如何以適當的方式委託給域名?

所有建議將不勝感激!

回答

2

Swing通常很好地支持MVC,並將數據從域對象向輸入/顯示控件推送或拉出。我會做的是:

實例化您放入CardLayout的面板,並將「空白」域對象作爲其GUI模型。 (或者可以從另一層檢索模型的某種定位器。)然後在輸入組件上掛接更改通知,以便在輸入中的值發生更改時更新域對象。

然後,當涉及到堅持域對象,只需從窗體面板中檢索它。

如果您需要在兩個控件中顯示相同的模型值,它們應共享相同的模型。如果您需要對代碼的較低層顯示的對象執行更新,則應該在模型上執行更新,而不是/除了域對象之外。

+0

難道沒有更好的自己說! 1+ –

+0

謝謝!簡單而優雅。 –