< 이전 | 다음 >

학습 2.3: 세부사항 필드를 테이블 선택사항에 바인드

이전 연습에서 employeesTable을 웹 서비스의 getLightEmployeeRecords() 서비스가 리턴하는 lightEmployeeRecordRows 데이터 오브젝트에 바인드했습니다. 이제는 테이블에서 선택하는 직원에 따라 세부사항 필드를 채워야 합니다.

선택된 각 직원에 대한 추가 세부사항을 가져오는 데 또 다른 데이터 오브젝트가 사용됩니다. 추가할 selectedEmployeeRecord 데이터 오브젝트는 getFullEmployeeRecord() 서비스에서 리턴됩니다. 이 서비스는 테이블에서 선택된 직원의 ID를 매개변수로 사용하여 직원에 대한 추가 세부사항(예: 전화번호 및 작업 위치)을 보충합니다.

테이블을 행 데이터 오브젝트에 바인드할 때 사용했던 JRowTableBinder를 사용하면 이 단계를 간소화할 수 있습니다. JRowTableBinder 바인더는 테이블에서 선택한 요소를 getFullEmployeeRecord(Integer) 메소드에 대한 매개변수로 사용할 수 있는 별도의 데이터 오브젝트로 내놓습니다. 그러면 각 텍스트 필드를 selectedEmployeeRecord 데이터 오브젝트의 해당 특성에 쉽게 바인드할 수 있습니다.

웹 서비스에 포함된 두 개의 서비스로 각 직원의 모든 세부사항을 가져옵니다. 테이블에는 모든 직원이 나열되기 때문에 테이블에는 데이터의 서브세트만 표시됩니다. 이 때 단일 직원을 선택하면 선택된 해당 직원에 대해서만 나머지 직원 정보를 검색할 수 있습니다. 테이블이 데이터를 요청할 때 웹 서비스가 각 직원에 대한 모든 정보를 송신한 경우, 웹 통신량이 과도해져 응용프로그램 성능 저하를 초래할 수 있습니다.

예를 들어, 직원 레코드에 사진이나 첨부가 포함된 경우, 단순히 전체 직원 목록을 가져올 때 모든 사진을 검색하고 싶지 않을 수 있습니다. 따라서 테이블을 채우는 데에는 getLightEmployeeRecord 서비스가 사용되고 getFullEmployeeRecord는 테이블에 선택된 직원에 대한 전체 레코드를 가져옵니다.

성 필드 바인드

이 단계에서는 selectedEmployeeRecord 데이터 오브젝트의 lastName 특성에 필드를 바인드합니다.

  1. Java Beans 보기나 디자인 보기에서 성(lastNameField)에 대해 JTextField를 선택하십시오. 디자인 영역의 텍스트 필드에 바인드 탭이 표시됩니다.

    텍스트 필드의 바인드 탭

  2. 바인드 탭을 클릭하여 필드 데이터 바인딩 대화 상자를 여십시오.
  3. 새 데이터 소스 데이터 오브젝트를 클릭하십시오. 기존 jRowTableBinder 데이터 오브젝트가 정확한 성을 리턴하더라도 여기에는 전체 직원 레코드가 포함되어 있지 않습니다. 따라서 전체 직원 레코드를 나타내는 새 데이터 오브젝트를 작성해야 합니다.
  4. 소스 유형 필드에서 웹 서비스가 선택되었는지, 데이터 소스에 대해 webServiceDataSource가 선택되었는지 확인하십시오.
  5. 소스 서비스 목록에서 getFullEmployeeRecord(java.lang.Integer)를 선택하십시오. 새 데이터 소스 데이터 오브젝트 대화 상자는 텍스트 필드와 호환 가능한 데이터 오브젝트를 리턴하는 서비스를 나열합니다.
  6. 이름 필드에 selectedEmployeeRecord를 입력하십시오.
  7. 인수 필드에서 jRowTableBinder를 선택하고 특성 필드에서 employeeID를 선택하십시오. 이제 선택된 행의 직원 ID가 getFullEmployeeRecord() 서비스 메소드의 인수로 설정됩니다.
    주: getFullEmployeeRecord(java.lang.Integer)는 인수로 정수를 필요로 합니다. 직원 테이블에서 현재 선택한 직원 ID를 사용하여 전체 레코드를 검색할 수 있습니다. 테이블을 바인드했을 때 Visual Editor가 자동으로 jRowTableBinder를 생성했으며 이를 통해 직원 테이블의 현재 선택 상태를 청취할 수 있습니다. 정수 매개변수의 경우 jRowTableBinder에서 선택된 행의 직원 ID를 사용합니다.

    새 데이터 소스 데이터 오브젝트 대화 상자

  8. 확인을 클릭하십시오.
  9. 필드 데이터 바인딩 대화 상자에서 데이터 오브젝트 목록에 selectedEmployeeRecord가 선택되었는지 확인하십시오. jRowTableBinder 데이터 오브젝트보다 selectedEmployeeRecord 데이터 오브젝트에 사용 가능한 특성이 더 많습니다.
  10. 데이터 오브젝트 특성 목록에서 lastName 특성을 선택하십시오.

    lastNameField에 대한 필드 데이터 바인딩 대화 상자

  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 필드를 읽기 전용으로 만들기

필드의 편집 가능 특성이 false로 설정되어 있으므로 직원 ID 필드는 사용 불가능합니다. 그러나 텍스트 필드 바인더의 기본 작동은 데이터 오브젝트에 값이 있을 때 필드의 사용 가능 상태를 변경시킵니다. 따라서 필드가 초기 읽기 전용 상태로 남아 있도록 이 바인더 동작을 끌 수 있습니다.

바인더가 편집 가능한 특성으로 자동 전환되지 않게 하려면 다음을 수행하십시오.
  1. 직원 ID 필드를 선택하십시오. 필드의 바인더를 표시하는 텍스트 바인더 아이콘 아이콘이 있는 선이 디자인 영역에 표시됩니다.
  2. 직원 ID 필드에 대한 바인더 아이콘(Text binder icon)을 클릭하십시오.
  3. 특성 보기에서 autoEditable 특성을 false로 변경하십시오. Enter를 누르십시오.

학습 체크포인트

이제 응용프로그램을 실행하고 테이블에서 직원을 선택하면 해당 직원 레코드의 세부사항이 세부사항 필드에 표시됩니다.

< 이전 | 다음 >