我一直被困在設計的這個特定部分,我想要一些關於如何處理它的輸入。我的課程包括課程LeerTrajecten
和元素Elementen
。這兩個對象都可以獨立存在,但元素也可以添加到課程中。 Element
在本身就像Document
,Casus
對象的抽象超等通過將多個表模型提取到單個TableModelManager來改進設計
(1) 當元件被添加到過程中,一個療程元件LeerTrajectenElement
是創建含有TrajectCode
,ElementCode
,自身由前兩個字段和一些其他數據組成的唯一代碼(DisplayNaam
,DisplayOmschrijving
)。
在GUI(Spring)中,有幾個專用於管理這些課程和元素的選項卡(JTabbedPane
)。每個選項卡都有一個概覽和一個詳細信息面板。在此概覽中,有一個JTable
可顯示每個現有的Element
或Traject
。
這僅僅是作爲一種將程序置於透視中(LeerTrajectElement
)的方式,並顯示可能有多個JTable
同時處於活動狀態,但在不同的選項卡上。
(2) 我也得到了管理人員,其唯一目的是管理其各自的對象(LeerTrajectManager
管理LeerTraject
,ElementManager
管理Element
等)。這些管理人員被稱爲Domeincontroller
,這是整個域的一般外觀。來自GUI的請求被髮送到DomeinController
,該請求將請求發送給正確的請求(如果它是用於管理器的話)。
這是我的程序的基本輪廓,我將包括一些圖作爲視覺輔助。
(1)
(2)
我希望我已經提供了關於該項目的當前設置足夠的信息。 出於某種原因,我的模型顯示不正確,但DomeinController
包含3個管理器(它在概述中未顯示,但關聯存在)。
正如你在圖2中看到的,每個經理都擁有一個tableModel。 TableModels的定義是這樣的:
MyAbstractTableModel
延伸AbstractTableModel
並提供基本實現,以便具體實現可以從這個類派生的,而只有提供很基本的需求。
這就是我們要做到的地方: 當前每個經理都有自己的tableModel,我們(老師)決定我們應該把這個抽象成一個經理。我一直在爲此實現一個實現,但是我覺得我有一些fundemental錯誤:這些tableModels可以爲幾個不同的目的生成:要麼所有元素,要麼所有元素鏈接到 a當然,或者你想創建兩個getTableModel
方法鏈接到特定當然所有元素,等等等等
爲了獲得這樣的事情,我已經試過。第一種只用了一個枚舉{LEERTRAJECT
,ELEMENT
,LEERTRAJECTELEMENT
}作爲參數,而第二個採取了附加的List<E>
作爲參數。這樣做將使我一般數據添加到請求,這可能會提前通過適當的管理來收集(因此只有結果集的數據發送到TableModelManager
數據。
這種方式結束了一個很大的Switch
報表每方法在我的TableModelManager
中,以確定它應該發生什麼,以及應該使用什麼tableModel。代碼變得非常不潔,所以我認爲這可能不是我想要的方式。
至於爲什麼我們應該引入經理在首位:appearantly我們tableModels現在硬鏈接到我們各自的管理人員,我們應該儘量避免這種
。所以,總而言之:我有幾個經理,他們都持有TableModel
來顯示他們各自的數據。我想通過將當前的TableModel
保存在TableModelManager
中來集中這一點,並通過此對象生成表模型。其他經理只會提及TableModelManager
,並告訴他數據已更改或要求提供適當的型號。
我該如何解決這個問題?
PS:我知道這是更多的是設計問題,所以如果我應該把這個在stackexchange網絡上不同的網站只是讓我知道,我會刪除此。
PPS:我對非英語部分很抱歉,我的隊友們拒絕只用英語。
謝謝你,我肯定會看看這個! – 2013-03-06 16:05:18
不客氣;請花時間審查並將您的發現呈現給您的團隊。作爲參考,這個非常簡單的[示例](http://stackoverflow.com/a/8260663/230513)顯示'setModel()'允許'JTable'顯示任何(有效的)'TableModel'。 – trashgod 2013-03-06 18:52:15