< Wstecz | Dalej >

Lekcja 2.3: Powiązanie pól szczegółów z wyborem w tabeli

W poprzednim ćwiczeniu tabela employeesTable została powiązana z obiektem danych lightEmployeeRecordRows zwracanym przez usługę getLightEmployeeRecords() w usłudze Web Service. Teraz należy zapełnić pola szczegółów na podstawie pracownika wybranego w tabeli.

Aby uzyskać dodatkowe szczegóły na temat każdego wybranego pracownika, należy użyć kolejnego obiektu danych. Obiekt danych selectedEmployeeRecord, który zostanie dodany, jest zwracany przez usługę getFullEmployeeRecord(). Ta usługa pobiera identyfikator pracownika wybranego w tabeli jako parametr, a następnie pobiera dodatkowe informacje dotyczące pracownika włącznie z numerem telefonu i położeniem biura.

Obiekt JRowTableBinder używany podczas wiązania tabeli z obiektem danych wiersza upraszcza tę czynność. Obiekt JRowTableBinder prezentuje element wybrany w tabeli jako oddzielny obiekt danych, którego można użyć jako parametru dla metody getFullEmployeeRecord(java.lang.Integer). Następnie można łatwo powiązać każde z pól tekstowych z odpowiadającą mu właściwością w obiekcie danych selectedEmployeeRecord.

Usługa Web Service obejmuje dwie usługi do pobierania wszystkich szczegółów każdego pracownika. W tabeli są przechowywani wszyscy pracownicy, ale wyświetlany jest tylko pewien podzbiór danych. Po wybraniu jednego pracownika można pobrać pozostałe informacje dotyczące tylko tego pracownika. Gdyby usługa Web Service wysyłała wszystkie dane o każdym pracowniku, gdy tabela zażąda danych, ruch w sieci WWW byłby bardzo duży, co mogłoby zmniejszyć wydajność aplikacji.

Jeśli na przykład rekord pracownika zawiera zdjęcie lub załącznik, nie ma potrzeby pobierania wszystkich zdjęć podczas zwykłego przeglądania pełnej listy pracowników. W związku z tym usługa getLightEmployeeRecord służy do zapełniania tabeli, a usługa getFullEmployeeRecord pobiera pełny rekord pracownika wybranego w tabeli.

Powiązanie pola nazwiska

W tym kroku użytkownik powiąże pole Nazwisko z właściwością lastName obiektu danych selectedEmployeeRecord:

  1. W widoku komponentów bean Java lub widoku projektowania wybierz pole JTextField nazwiska (lastNameField). W obszarze projektowania na polu tekstowym zostanie wyświetlona zakładka Wiązanie.

    Zakładka Wiązanie na polu tekstowym

  2. Kliknij zakładkę Wiązanie, aby otworzyć okno dialogowe Powiązania danych pól.
  3. Kliknij opcję Nowy obiekt danych źródła danych. Chociaż istniejący obiekt danych jRowTableBinder zwraca poprawne nazwisko, nie obejmuje on pełnego rekordu pracownika. Należy utworzyć nowy obiekt danych reprezentujący pełny rekord pracownika.
  4. W polu Typ źródła upewnij się, że wybrana jest opcja Usługa Web Service, a w polu Źródło danych upewnij się, że wybrana jest opcja webServiceDataSource.
  5. Na liście Usługa źródła wybierz metodę getFullEmployeeRecord(java.lang.Integer). Okno dialogowe Nowy obiekt danych źródła danych zawiera usługi zwracające obiekty danych zgodne z polem tekstowym.
  6. W polu Nazwa wpisz selectedEmployeeRecord.
  7. W polu Argument wybierz wartość jRowTableBinder, a w polu Właściwość wybierz wartość employeeID. Identyfikator pracownika wybranego wiersza jest teraz ustawiony jako argument metody usługi getFullEmployeeRecord().
    Uwaga: Metoda getFullEmployeeRecord(java.lang.Integer) wymaga podania liczby całkowitej jako argumentu. Do pobrania pełnego rekordu należy użyć identyfikatora pracownika dla bieżącego wyboru w tabeli pracowników. Podczas wiązania tabeli edytor wizualny automatycznie generuje obiekt jRowTableBinder nasłuchujący bieżącego wyboru w tabeli pracowników. Jako parametru całkowitego należy użyć wartości employeeID z wybranego wiersza w obiekcie jRowTableBinder.

    Okno dialogowe nowego obiektu danych źródła danych

  8. Kliknij przycisk OK.
  9. W oknie dialogowym Powiązania danych pól upewnij się, że obiekt selectedEmployeeRecord został wybrany na liście Obiekty danych. Należy zauważyć, że więcej dostępnych właściwości istnieje dla obiektu danych selectedEmployeeRecord niż dla obiektu danych jRowTableBinder.
  10. Na liście Właściwości obiektu danych wybierz właściwość lastName.

    Okno dialogowe Powiązania danych pól dla pola lastNameField

  11. Kliknij przycisk OK. Pole nazwiska w aplikacji zostało teraz powiązane z właściwością lastName obiektu danych selectedEmployeeRecord zwracanego przez usługę getFullEmployeeRecord().

    Nowy obiekt danych o nazwie selectedEmployeeRecord został utworzony i dodany do aplikacji. Wizualna reprezentacja obiektu danych została dodana do wolnego obszaru formularza w widoku projektowania, co zostało pokazane na poniższym obrazku:

    Obiekt danych selectedEmployeeRecord

    Teraz, po wybraniu pola lastName w obszarze projektowania, linia wskazuje, że jest ono powiązane z obiektem selectedEmployeeRecord. Na środku linii ikona konsolidatora tekstu reprezentuje obiekt SwingTextComponentBinder użyty do tego wiązania. Po wybraniu linii lub ikony reprezentującej konsolidator w obszarze projektowania można sprawdzić właściwości konsolidatora w widoku Właściwości.

Powiązanie pozostałych pól szczegółów

Aby powiązać każde z pozostałych pól szczegółów pracownika, należy postępować w analogiczny sposób, co dla pola nazwiska, ale bez potrzeby dodawania obiektu danych. Ponieważ obiekt danych selectedEmployeeRecord został już dodany, wystarczy tylko powiązać każde pole z odpowiadającą mu właściwością w obiekcie danych selectedEmployeeRecord.

Aby powiązać pola, należy wykonać poniższe czynności dla każdego z pól w sekcji Informacje o pracowniku aplikacji:
  1. Wybierz pole w widoku projektowania i kliknij zakładkę Wiązanie.
  2. W oknie dialogowym Powiązania danych pól wybierz obiekt selectedEmployeeRecord z listy Obiekty danych.
  3. Na liście Właściwości obiektu danych wybierz odpowiednią właściwość dla wiązanego pola. Na poniższym wykresie zostały pokazane właściwości, z którymi należy powiązać poszczególne pola tekstowe:
    Pole Właściwość w obiekcie danych selectedEmployeeRecord
    lastNameField lastName
    firstNameField firstName
    idField employeeID
    emailField email
    phoneField phoneNum
    officeField location.office
    buildingField location.building
    siteField location.site
  4. Kliknij przycisk OK.

Po zakończeniu wiązania pól tekstowych obszar projektowania powinien wyglądać podobnie do przedstawionego na poniższym obrazku:

Widok kanwy graficznej z powiązanymi polami tekstowymi

Określanie pola identyfikatora pracownika jako pola tylko do odczytu

Pole identyfikatora pracownika jest wyłączone, ponieważ właściwość możliwości edycji tego pola została ustawiona na wartość false. Jednak domyślne zachowanie konsolidatora pola tekstowego zmienia stan włączenia pola, jeśli obiekt danych zawiera wartość. Można wyłączyć takie zachowanie konsolidatora, aby pole pozostawało w swoim początkowym stanie tylko do odczytu.

Aby uniemożliwić konsolidatorowi automatyczną zmianę właściwości określającej możliwość edycji:
  1. Wybierz pole identyfikatora pracownika. W obszarze projektowania zostanie wyświetlona linia z ikoną Ikona konsolidatora tekstu reprezentującą konsolidator pola.
  2. Kliknij ikonę konsolidatora Ikona konsolidatora tekstu dla pola identyfikatora pracownika.
  3. W widoku Właściwości zmień wartość właściwości autoEditable na false. Naciśnij klawisz Enter.

Punkt kontrolny lekcji

Teraz, po uruchomieniu aplikacji i wybraniu pracownika w tabeli, w polach szczegółów zostaną wyświetlone szczegółowe informacje z rekordu danego pracownika.

< Wstecz | Dalej >