2012-01-21 19 views
0

我正在設計一個使用SWT的Java應用程序。我有一些表將顯示來自數據庫的數據,只是一些關係行與列。在一些地方,我想顯示名和姓,然後在其他地方我想顯示全名,年齡和薪水。我甚至可能想要展示一些像卡通人物名字,他們所在的卡通人物,他們是「好」人物還是「壞人物」,角色的知名度排名等。用於顯示動態表格的Java模式?

這些是隻是舉例說明我的觀點。我想顯示關係數據,就像存在於任何數據庫中一樣。 SWT有一個用於顯示這類數據的完美表格窗口小部件(正如我期望的大多數GUI庫所做的那樣),但是我當前的設計問題是我特別將需要的列附加到表中,因爲我需要它們。因此,在附加列A,B,C的地方,然後在這裏附上X,Y,Z列。如果我在收到數據之前不確切知道我的列的外觀如何?

我可能會考慮將列信息移入數據本身的任何模式嗎?我想這是一個相當普遍的需求。

我想過使用返回字符串列表的方法設計Row對象的容器(帶有接口),這些字符串可能是列的標題。 Row對象可以實現一個返回給定列值的方法,但每列可能有不同的類型,那麼我會返回什麼?另外,容器定義列名似乎很奇怪,然後容器中的Row對象必須定義所需行爲的另一半;感覺所有必需的方法都分佈在多個接口上。

所以任何設計模式或現有的小工具,我可以看看將不勝感激。謝謝。

回答

2

我不確定你的意思是什麼時候問:「我可能考慮過將列信息移入數據本身的模式嗎?我想這是一個相當常見的需求。」

這聽起來像是你想要構建一個表來顯示你從數據庫中檢索的一些數據,而不需要「預定義」諸如列/行數,每列數據類型等內容。在構建TableModel的例子和教程?

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data

一旦你從數據庫中提取數據,您將只需創建一個DefaultTableModel的一個實例。如果您查看DefaultTableModel的構造函數,您會注意到它可以接受Object類型的二維數組(或矢量矢量,或者......您可以實現這個想法),這意味着您不需要關心數據的「類型」。 JTable將根據模型中的內容找出如何最好地顯示數據。如果我完全誤解了你的問題,請提前道歉。

+0

謝謝。 TableModal接口與我正在尋找的接近。雖然它不在SWT中,但我仍然可以使用它,或者至少在我自己的界面中使用相同的想法。 – Buttons840