< Wstecz | Dalej >

Lekcja 2.5: Włączenie przycisku Usuń i okna dialogowego potwierdzenia

W tym ćwiczeniu użytkownik zaprogramuje aplikację Firmowa książka adresowa tak, aby można było usunąć rekord pracownika.

Poniższa lista opisuje zachowania, których ma używać aplikacja:
  • Po wybraniu pracownika w tabeli zostanie włączony przycisk Usuń.
  • Po kliknięciu przycisku Usuń zostanie otwarte okno dialogowe Potwierdź usunięcie z pytaniem o potwierdzenie usunięcia.
  • Jeśli użytkownik kliknie przycisk Tak w oknie dialogowym Potwierdź usunięcie, rekord pracownika zostanie usunięty, okno Potwierdź usunięcie zostanie zamknięte, a lista pracowników zostanie odświeżona.
  • W przypadku kliknięcia przycisku Nie usunięcie zostanie anulowane, a okno dialogowe Potwierdź usunięcie zostanie zamknięte.

Programowanie włączania i wyłączania przycisku Usuń w zależności od tego, czy w tabeli został wybrany wiersz

Aby zaprogramować włączanie i wyłączanie przycisku Usuń, należy do tabeli dodać procedurę nasłuchiwania włączającą przycisk po wybraniu wiersza.

  1. Wybierz tabelę employeesTable w widoku komponentów bean Java. W widoku źródła zostanie podświetlony następujący wiersz:
    employeesTable = new JTable();
  2. Bezpośrednio za tym wierszem dodaj nowy obiekt ListSelectionListener i zdarzenie valueChanged do obiektu employeesTable:
    employeesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
       public void valueChanged(ListSelectionEvent e) {
         getDeleteButton().setEnabled(getEmployeesTable().getSelectedRowCount() != 0);
       }
    });
  3. Po dodaniu tych wierszy kodu edytor źródła oznaczy je jako błędy do chwili zaimportowania obiektu ListSelectListener i ListSelectionEvent. Aby dodać wymagane instrukcje importu, w menu głównym kliknij opcję Źródło > Uporządkuj instrukcje importu. Do sekcji instrukcji importu klasy zostaną dodane następujące wiersze:
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
Teraz po wybraniu wiersza w tabeli przycisk Usuń zostanie włączony.

Programowanie otwierania okna dialogowego Potwierdź usunięcie po kliknięciu przycisku Usuń

Dodaj zdarzenie actionPerformed do przycisku Usuń i zaprogramuj je do otwierania okna dialogowego Potwierdź usunięcie.

  1. Kliknij prawym przyciskiem myszy przycisk Usuń i wybierz opcję Zdarzenia > actionPerformed. Do metody getDeleteButton() zostanie dodany następujący szkielet zdarzenia:
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
         System.out.println("actionPerformed()"); 
         // TODO Automatycznie wygenerowany kod pośredniczący zdarzenia actionPerformed()
       }
    });
  2. Zastąp ten wygenerowany szkielet poniższym kodem, który włącza widoczność okna dialogowego Potwierdź usunięcie po kliknięciu przycisku:
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
         getConfirmDialog().setVisible(true);
       }
    });

Wiązanie pola tekstowego w oknie dialogowym Potwierdź usunięcie

Powiąż pole tekstowe w oknie dialogowym Potwierdź usunięcie, aby wyświetlić imię pracownika do usunięcia.

  1. W widoku komponentów bean Java lub obszarze projektowania wybierz pole tekstowe employeeToDeleteField i kliknij zakładkę Wiązanie.

    Okno dialogowe Potwierdź usunięcie przed wiązaniem

  2. W oknie dialogowym Powiązania danych pól wybierz obiekt danych selectedEmployeeRecord i pole firstName, a następnie kliknij przycisk OK.

    Pole tekstowe jest teraz powiązane z kolumną firstName wiersza wybranego w tabeli employeesTable.

    Okno dialogowe Potwierdź usunięcie po powiązaniu

  3. Aby zapewnić, że pole to jest tylko do odczytu, ustaw właściwość autoEditable konsolidatora pola na wartość false.

Wiązanie przycisku Tak do wykonywania operacji usunięcia

Powiąż przycisk Tak tak, aby wywoływał metodę removeEmployee(java.lang.Integer) usługi Web Service.

  1. Wybierz przycisk Tak i kliknij zakładkę Wiązanie, aby otworzyć okno dialogowe Powiązania działań komponentów.
  2. W polu Typ źródła wybierz opcję Usługa Web Service.
  3. W polu Źródło danych wybierz obiekt webServiceDataSource.
  4. Na liście Usługa źródła wybierz metodę removeEmployee(java.lang.Integer).
  5. Pole Nazwa automatycznie zmieni wartość na removeEmployeeAction. Zaakceptuj tę wartość domyślną.
  6. W polu Argument wybierz pozycję selectedEmployeeRecord.
  7. W polu Właściwość wybierz pozycję employeeID. Ponieważ metoda removeEmployee() przyjmuje jako argument liczbę całkowitą, należy użyć identyfikatora pracownika obiektu selectedEmployeeRecord.
  8. Ustaw wartość Stan początkowy przycisku na Włączony.
  9. W polu Reguły aktywowania wybierz opcję Ignoruj dla każdego z warunków.

    Taki stan komponentu oznacza, że przycisk Tak będzie zawsze włączony, ponieważ nie ma potrzeby zmiany jego stanu.

    Okno dialogowe Powiązania działań komponentów dla przycisku Tak

  10. Kliknij przycisk OK.

Dodawanie zdarzenia w celu ukrycia okna dialogowego Potwierdź usunięcie po usunięciu pracownika

W tym kroku zostanie dodane zdarzenie do konsolidatora przycisku Tak (nie do samego przycisku Tak). Okno dialogowe Potwierdź usunięcie ma zostać zamknięte po usunięciu pracownika, czyli po pomyślnym wywołaniu usługi źródła danych przez konsolidator.

Dodaj do metody getRemoveEmployeeAction() następujący kod:
removeEmployeeAction.addActionBinderListener(new jve.generated.IActionBinder.ActionBinderListener() { 
   public void afterActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {    
     getConfirmDialog().setVisible(false);
   }
   public void beforeActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {} 
});

Ten kod zdarzenia ukrywa okno dialogowe Potwierdź usunięcie po wykonaniu operacji przez konsolidator.

Punkt kontrolny lekcji

Teraz po uruchomieniu aplikacji Firmowa książka adresowa można wybrać pracownika w tabeli, kliknąć przycisk Usuń, a następnie kliknąć przycisk Tak w celu potwierdzenia usunięcia. Rekord pracownika zostanie usunięty z katalogu, co zostanie odzwierciedlone na liście pracowników.

< Wstecz | Dalej >