< 上一個課程 | 下一個課程 >

第 2.3 課:將明細欄位連結至表格選項

在上一個練習中,您將 employeesTable 連結至 Web 服務中的 getLightEmployeeRecords() 服務所傳回的 lightEmployeeRecordRows 資料物件。 現在,您必須根據表格中所選取的員工來移入詳細資料欄位。

如果要取得每個所選員工的額外詳細資料,還會使用另一個資料物件。 您將新增的 selectedEmployeeRecord 資料物件是 getFullEmployeeRecord() 服務所傳回的。 這個服務以表格中之所選員工的 ID 為參數,且會提取員工的其他詳細資料,其中包括電話和工作位置。

您將表格連結至列資料物件時所用的 JRowTableBinder 會簡化這個步驟。JRowTableBinder 會將表格中的所選元素顯現成可用來作為 getFullEmployeeRecord(java.lang.Integer) 方法的參數的個別資料物件。 之後,您就可以輕鬆地將每一個文字欄位連結至 selectedEmployeeRecord 資料物件中相對應的內容。

Web 服務包含兩個服務,可取得每一位員工的所有詳細資料。表格會列出所有員工,但只會顯示部分資料。 之後,當選取某單一員工時,您可以只擷取這個所選員工的其餘員工資訊。 如果在表格要求資料時,Web 服務傳送了每個員工的所有資料,Web 資料傳輸可能會太重,可能會降低應用程式的效能。

比方說,如果員工記錄包括照片或附件,當您只要取得完整員工清單時,您不會想擷取所有照片。 因此,getLightEmployeeRecord 服務用來將資料移入表格,getFullEmployeeRecord 用來取得表格中所選取之員工的完整記錄。

連結「姓氏」欄位

在這個步驟中,您要將姓氏欄位連結至 selectedEmployeeRecord 資料物件的 lastName 內容:

  1. 在 Java Bean 視圖或設計視圖中,選取姓氏 (lastNameField) 的 JTextField。 設計區域會在文字欄位上顯示連結標籤。

    文字欄位上的「連結」標籤

  2. 按一下連結標籤,開啟「欄位資料連結」對話框。
  3. 請按一下新建資料來源資料物件。雖然現有的 JRowTableBinder 資料物件會傳回正確的姓氏,但它不包括完整的員工記錄。 您必須建立新的資料物件來代表完整的員工記錄。
  4. 來源類型欄位中,確定已選取 Web 服務,在資料來源中,確定已選取 webServiceDataSource
  5. 來源服務清單中,選取 getFullEmployeeRecord(java.lang.Integer)。 這時「新建資料來源資料物件」對話框會列出傳回相容於文字欄位之資料物件的服務。
  6. 名稱欄位中,輸入 selectedEmployeeRecord
  7. 引數欄位中,選取 jRowTableBinder, 在內容欄位中,選取 employeeID。 所選列的員工 ID 現在設為將作為 getFullEmployeeRecord() 服務方法的引數。
    註: getFullEmployeeRecord(java.lang.Integer) 需要整數做為引數。 您要利用員工表格現行選項的員工 ID 來擷取一份完整記錄。 當您連結表格時,視覺化編輯器自動產生 JRowTableBinder,JRowTableBinder 會接聽員工表的現行選項。 對於整數參數,您將使用 JRowTableBinder 中所選取之列的 employeeID。

    「新建資料來源資料物件」對話框

  8. 按一下確定
  9. 在「欄位資料連結」對話框中,確定資料物件清單中已選取 selectedEmployeeRecord。 請注意,selectedEmployeeRecord 資料物件的可用內容比 JRowTableBinder 資料物件多。
  10. 資料物件內容清單中,選取 lastName 內容。

    lastName 欄位的「欄位資料連結」對話框

  11. 按一下確定。現在,應用程式中的姓氏欄位連結至 selectedEmployeeRecord 資料物件的 lastName 內容,它是 getFullEmployeeRecord() 所傳回的。

    這時會建立一個名稱為 selectedEmployeeRecord 的新資料物件,且會將它加入您的應用程式中。 資料物件的視覺化表示法會加入設計視圖的開放式區域中,如下圖所示:

    selectedEmployeeRecord 資料物件

    現在,當您在設計區域中選取 lastName 欄位時,會有一條線指示它連結到 selectedEmployeeRecord。 在這條線中間,文字連結程式圖示代表這個連結所用的 SwingTextComponentBinder。 如果您在設計區域中選取代表連結程式的這條線或圖示,您可以在「內容」視圖中檢查連結程式的內容。

連結其餘明細欄位

如果要連結員工的每個其餘詳細資料欄位,請遵循類似姓氏欄位的程序,但不需要新增資料物件。 由於已新增 selectedEmployeeRecord 資料物件,您只需要將每一個欄位連結至 selectedEmployeeRecord 資料物件中相對應的內容。

如果要連結欄位,請完成下列步驟來處理應用程式員工詳細資料區段中的每個欄位:
  1. 在設計視圖中選取欄位,按一下連結標籤。
  2. 在「欄位資料連結」對話框中,從資料物件清單中選取 selectedEmployeeRecord。
  3. 資料物件內容清單中,選取您要連結之欄位的適當內容。 下圖顯示每個文字欄位所需連結的內容:
    欄位 selectedEmployeeRecord 資料物件中的內容
    lastNameField lastName
    firstNameField firstName
    idField employeeID
    emailField email
    phoneField phoneNum
    officeField location.office
    buildingField location.building
    siteField location.site
  4. 按一下確定

文字欄位連結完成之後,設計區應該看起來如下圖:

顯示已連結文字欄位之圖形式畫布的視圖

將員工 ID 欄位設成唯讀

員工 ID 欄位是停用的,因為欄位的可編輯內容設為 false。 不過,當資料物件包含值時,文字欄位連結程式的預設行為會在欄位上變更已啟用狀態。 您可以關閉這個連結程式行為,使欄位維持最初的唯讀狀態。

如果要防止連結程式自動切換可編輯的內容,請執行下列動作:
  1. 選取「員工 ID」欄位。設計區域上會顯示一條線,並以圖示文字連結程式圖示表示欄位的連結程式。
  2. 按一下「員工 ID」欄位的連結程式「文字連結程式」圖示圖示。
  3. 在「內容」視圖中,將 autoEditable 內容改成 false。按 Enter 鍵。

課程回顧

現在,當您執行應用程式以及從表格中選取某個員工時,員工記錄的詳細資料會顯示在詳細資料欄位中。

< 上一個課程 | 下一個課程 >