2013-08-05 91 views
1

我使用MVC體系結構在Swing中創建應用程序。但是我有一些關於在MVC架構中使用JTable組件的問題。重點是,我有一個表格中的三列其單元格包含常量值。此外,可以通過點擊按鈕添加其他列,並使用另一個按鈕將常數值計算到新創建的單元格中。Java Swing項目 - JTable&MVC

所以,因爲我現在有三個具有常數值的列,這意味着這個值需要初始化爲JTable,這聽起來像我需要使那些在創建JTable的View類中保持常量組件和其他組件,這是一個壞主意,因爲這些常量值我也需要使用Model類。我的選擇是使這些常量的接口。

我正在看MVC項目的其他一些簡單例子,我還沒有看到任何人在視圖類中實現或創建這個常量。所以我想知道,我應該在Model中創建一個MyTableModel類,它擴展了DefaultTableModel或類似的東西, 但是如果我決定在視圖類中使用模型類,我違反規則 「它不會」不知道視圖是否存在「?

是否有人已經使用MVC模式和JTable組件創建過類似的項目,或者如果有人可以分解爲概念,如:「我應該更關注什麼」,「我可以在哪裏創建,哪裏不是班「?

有沒有人使用Skype或類似的溝通方式,我並不是無聊,只是爲了讓別人問一些簡短的問題。

+0

'有沒有人使用Skype或類似的通信形式 - - 你可以嘗試使用聊天http://chat.stackoverflow.com/ – Tala

+1

看看這篇文章如何把一個Swing GUI放在一起。 http://java-articles.info/articles/?p=196這是一個數獨求解器,但將任何Swing GUI放在一起時,這些步驟是相同的​​。 –

+0

值存儲在'TableModel'; ['JTable'](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html)(視圖)呈現(並可選地編輯)模型中的值。 – trashgod

回答

1

實際上,如果你看看JTable的工作方式(當然如果你理解你的問題是正確的),它非常簡單。

要顯示不同的表格單元格的實際值,你必須指定創建自定義CellRenderer /更新搖擺基於價值從顯示每時間單元模型視圖組件/更新(重新繪製)。因此,表格本身不會在任何地方保存/存儲實際值 - 它只是使用表格模型提供的值更新單元格(重新繪製它)。每次對單元格進行任何更改時都會執行此類更新:從內部更改模型值或從外部調整大小/移動表格組件,調整列大小/移動e.t.c.

因此,您只需要將值存儲在表模型中(甚至是在您自己的全局模型中,並將表模型簡單地用作表視圖和模型之間的橋樑)。

而且您可以以任何您喜歡的方式提供來自表模型的值 - 常量值,計算值,緩存值,遠程加載值 - 無論您想要什麼。這不會影響表視圖(除非您創建一些異步值加載或類似的東西不適合默認的Swing組件模型)。