TableModelExample怎么简化Swing

2023-05-23

本篇内容主要讲解“TableModelExample怎么简化Swing”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“TableModelExample怎么简化Swing”吧!

该示例的目的是指出使用 TMF 框架代替传统 TableModel 设计的主要优势所在。示例中的应用程序将在屏幕上显示多个表,并且可以添加或删除表,表中可以包含不同类型的信息( String 类型、 int 类型、 Boolean 类型和 BigDecimal 类型),而且最重要的是,其中还包含可配置的列信息,必须定期更改它们。

示例应用程序的代码从 J2X 包中分离了出来,您可以 HR 文件夹的 src 目录中找到源代码。还可以双击 build/lib 文件中编译好的 JAR 文件,通过 JRE 运行应用程序。

在示例应用程序中,有两个类可以相互交换,一个叫作 TableModelFreeExample ,另一个叫作 TableModelExample 。这两个类在应用程序中做的是同样的事,使应用程序产生的行为也相同。但是,它们的设计不同,一个使用的是 TMF 框架,另外一个则使用传统的 TableModel。您从它们身上注意到的***件事可能是 TMF 类 TableModelFreeExample ,该类由 63 行代码构成,而在传统 TableModel 版本 TableModelExample 中,它长达 285 行。

Evil HR Director 应用程序

我要使用的示例应用程序是 Evil HR Director 应用程序,它允许人力资源总监(可能很可怕,戴着眼镜)在 JTable 中查看潜在雇员的列表,然后从表中选出雇佣的人。新雇佣的员工的资料会转移到当前雇员使用的两个 JTable 中;其中一个表包含个人信息,另外一个表包含财务信息。在当前雇员表中,总监可以随意选择解雇谁。您可以在图 1 中看到该应用程序的 UI。

图 1. Evil HR Director 应用程序

为了进一步证明 TMF 框架的简单性,请看清单 6。这个清单只包含三行必需的代码,就可以创建 Evil HR Director 应用程序中包含的三个表的模型。这些代码可以在 TableModelFreeExample 中找到。

清单 1.在 Evil HR Director 应用程序中创建模型所需要的代码

TableUtilities.setViewToModel("demo/hr/resources/evil_hr_table.xml",  "Hire", hireTable, candidates);      TableUtilities.setViewToModel("demo/hr/resources/evil_hr_table.xml",  "Personal", personalTable, employees);  TableUtilities.setViewToModel("demo/hr/resources/evil_hr_table.xml",  "Financial", financialTable, employees);

为了进行比较, TableModelExample 中包含用传统 TableModel 方法为三个表格创建模型所需要的代码。请查看示例包中的代码。不过,我不想在这里列出所有代码,因为它足足有 205 行!

演示 TMF 框架的灵活性

TMF 框架的巨大优势之一,是它能更加容易地基于 JTable 的应用程序在其发布之后进行修改。为了证实这一点,让我们来看两个可能的场景,这两个场景在使用 Evil HR Director 应用程序中每天都可能出现。在每个场景中,您都会看到框架是如何让应用程序更加容易地适应不断变化的用户需求。

场景 1:公司的策略发生变化,规定在公司的应用程序中查看私人的婚姻信息是非法的。

TMF:最终用户需要从 XML 配置文件中删除 Married?married 。

传统 TableModel:开发人员必须深入研究 Java 代码,修改 getColumnName() ,让它无法返回列名“Married?”;修改 getColumnCount() ,让它返回的结果比以前返回的结果少一列;修改 getValueAt() ,不让它返回 isMarried() 。然后开发人员必须重新编译 Java 代码,并重新部署应用程序。

场景 2:公司策略发生变化,公司觉得有必要在潜在雇员表中包含居住地所在的州的信息。

TMF:: 最终用户需要将 Statestate 添加到 XML 配置文件中。

传统 TableModel:开发人员必须深入研究 Java 代码,修改 getColumnName() ,添加一个叫作 “State” 新列;修改 getColumnCount() ,让它返回的列数加 1 ;修改 getValueAt() ,让它返回 getState() 。然后开发人员必须重新编译 Java 代码,并重新部署应用程序。

您可以看到,当应用程序中的表发生变化时(尤其在碰到一个总是朝令夕改的老板时,更改更加频繁),编辑 XML 文件要比重新部署整个应用程序容易得多。

使用代码

在您飞奔过去删除所有 TableModel 代码之前,我想我还得占用您一分钟解释一下 j2x.zip 文件的内容,以及您怎样才能在您自己的项目中使用它。(请记住,特定于 TMF 的代码可以在 com.ibm.j2x.swing.table 包中找到;您还会在 J2X 包中找到我在以前的文章“Go state-of-the-art with IFrame.”中介绍的其他代码。)

j2x.zip 文件包含两上文件夹:

src—— 包含本文中使用的源代码。在 src 文件夹中,还有两个文件夹:一个是 HR,包含构成 Evil HR Director 应用程序的源代码;另一个是 J2X,包含 J2X 项目中使用的所有源代码。

build—— 包含 Evil HR Director 应用程序和 J2X 项目编译后的类文件。该文件夹中的 lib 文件夹则包含 HR 应用程序和 J2X 项目的 JAR 文件。

lib.zip 文件包含以下文件夹:

lib—— 包含所有的第三方 JAR 文件,运行应用程序或者任何使用 J2X 项目的项目,需要使用这些文件。在这个文件夹中,您还会找到第三方项目的许可。

docs.zip 文件包含下列文件夹:

docs—— 包含 J2X 项目的所有 JavaDoc 信息。

要在应用程序中使用 J2X 包,则需要把 CLASSPATH 指向 build/lib 文件夹中的 j2x.jar 以及 lib 文件中包含的所有三个第三方 JAR 文件。第三方包的许可条款允许您重新发布本文包含的所有包,但是如果有兴趣对这些包做些修改,请阅读许可条款。

到此,相信大家对“TableModelExample怎么简化Swing”有了更深的了解,不妨来实际操作一番吧!这里是本站网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

《TableModelExample怎么简化Swing.doc》

下载本文的Word格式文档,以方便收藏与打印。