2012-01-21 85 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