在前面的练习中,已将 employeesTable 绑定至 Web Service 中的 getLightEmployeeRecords() 服务返回的 lightEmployeeRecordRows 数据对象。现在,需要根据表中选择的职员来填充详细信息字段。
要获取每个选择的职员的其它详细信息,需要使用另一个数据对象。将要添加的 selectedEmployeeRecord 数据对象是由 getFullEmployeeRecord() 服务返回的。此服务会把表中选择的职员的标识作为参数,并且会访存有关该职员的其它详细信息(包括电话号码和工作地点)。
将表绑定至行数据对象时使用的 JRowTableBinder 可以简化此步骤。JRowTableBinder 将表中选择的元素显示为单独的数据对象,该数据对象可以用作 getFullEmployeeRecord(java.lang.Integer) 方法的参数。然后,您可以很容易地将每个文本字段绑定至 selectedEmployeeRecord 数据对象中的相应属性。
背景:Web Service 包括用于获取每个职员的所有详细信息的两个服务。表中会列示所有职员,但表中只会显示部分数据。这样,当选择了单个职员时,可以只检索该选择职员的其它方面的职员信息。如果在表请求数据时,Web Service 发送每个职员的所有数据,则 Web 通信量可能很大并且会使应用程序的性能降低。例如,如果职员记录包括照片或附件,则您在获取职员的完整列表时,并不想要检索所有照片。因此,使用 getLightEmployeeRecord 服务来填充表,而 getFullEmployeeRecord 会获取表中选择的职员的完整记录。
要将姓字段绑定至 selectedEmployeeRecord 数据对象中的 lastName 属性:
背景:getFullEmployeeRecord(java.lang.Integer) 要求将整数作为自变量。想要使用 EMPLOYEE 表中当前选择的职员标识来检索完整的记录。当绑定了表时,可视编辑器自动生成了 jRowTableBinder(它将侦听当前在该 EMPLOYEE 表中进行的选择)。对于整数参数,将使用 jRowTableBinder 中选择的行的 employeeID。
将创建名为 selectedEmployeeRecord 的新数据对象并且会将它添加至应用程序。该数据对象的可视表示会添加至设计视图的自由格式区域,如下图所示:
现在,当在设计区域中选择 lastName 字段时,会有一条线指示它已绑定至
selectedEmployeeRecord。在这条线的中间,文本绑定程序 图标表示用于此绑定的
SwingTextComponentBinder。如果在设计区域上选择这条线或表示绑定程序的图标,则可以在“属性”视图中检查绑定程序的属性。
要绑定职员的其余的每个详细信息字段,将遵循与“姓”字段相似的过程,但是不需要添加数据对象。因为已添加了 selectedEmployeeRecord 数据对象,所以可以只将每个字段绑定至 selectedEmployeeRecord 数据对象中的相应属性。
要绑定字段,对于应用程序的职员详细信息部分中的每个字段,完成下列步骤:
字段 | selectedEmployeeRecord 数据对象中的属性 |
---|---|
lastNameField | lastName |
firstNameField | firstName |
idField | employeeID |
emailField | |
phoneField | phoneNum |
officeField | location.office |
buildingField | location.building |
siteField | location.site |
因为职员标识字段上的可编辑属性设置为 false,所以该字段被禁用。然而,当数据对象包含值时,文本字段绑定程序的缺省行为会将该字段更改为启用状态。可以关闭此绑定程序行为,这样该字段将保持为它的初始的只读状态。
要防止绑定程序自动切换可编辑属性
现在,当运行应用程序并从表中选择职员时,该职员的记录的详细信息会显示在详细信息字段中。