在上一個練習中,您將 employeesTable 連結至 Web 服務中的 getLightEmployeeRecords() 服務所傳回的 lightEmployeeRecordRows 資料物件。 現在,您必須根據表格中所選取的員工來移入詳細資料欄位。
如果要取得每個所選員工的額外詳細資料,還會使用另一個資料物件。 您將新增的 selectedEmployeeRecord 資料物件是 getFullEmployeeRecord() 服務所傳回的。 這個服務以表格中之所選員工的 ID 為參數,且會提取員工的其他詳細資料,其中包括電話和工作位置。
您將表格連結至列資料物件時所用的 JRowTableBinder 會簡化這個步驟。JRowTableBinder 會將表格中的所選元素顯現成可用來作為 getFullEmployeeRecord(java.lang.Integer) 方法的參數的個別資料物件。 之後,您就可以輕易將每個文字欄位連結至 selectedEmployeeRecord 資料物件中的對應內容。
背景:Web 服務包括兩項用來取得各員工所有詳細資料的服務。 表格會列出所有員工,但只會顯示部分資料。 之後,當選取某單一員工時,您可以只擷取這個所選員工的其餘員工資訊。 如果在表格要求資料時,Web 服務傳送了每個員工的所有資料,Web 資料傳輸可能會太重,可能會降低應用程式的效能。 比方說,如果員工記錄包括照片或附件,當您只要取得完整員工清單時,您不會想擷取所有照片。 因此,getLightEmployeeRecord 服務用來將資料移入表格,getFullEmployeeRecord 用來取得表格中所選取之員工的完整記錄。
如果要將姓氏欄位連結至 selectedEmployeeRecord 資料物件中的 lastName 內容,請執行下列動作:
背景:getFullEmployeeRecord(java.lang.Integer) 需要一個整數來作為引數。 您要利用員工表格現行選項的員工 ID 來擷取一份完整記錄。 當您連結表格時,視覺化編輯器自動產生 JRowTableBinder,JRowTableBinder 會接聽員工表的現行選項。 對於整數參數,您將使用 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 |
員工 ID 欄位是停用的,因為欄位的可編輯內容設為 false。 不過,當資料物件包含值時,文字欄位連結程式的預設行為會在欄位上變更已啟用狀態。 您可以關閉這個連結程式行為,使欄位維持最初的唯讀狀態。
如果要防止連結程式自動切換可編輯的內容,請執行下列動作:
現在,當您執行應用程式以及從表格中選取某個員工時,員工記錄的詳細資料會顯示在詳細資料欄位中。