< Vorherige Lektion | Nächste Lektion >

Lerneinheit 2.5: Die Schaltfläche 'Löschen' und das Fenster 'Bestätigungsdialog' aktivieren

In dieser Übung programmieren Sie die Anwendung 'My Company Directory' für das Löschen eines Mitarbeiterdatensatzes.

In der folgenden Liste ist das Verhalten beschrieben, das die Anwendung aufweisen soll:
  • Wenn Sie einen Mitarbeiter in der Tabelle auswählen, wird die Schaltfläche Löschen aktiviert.
  • Wenn Sie auf die Schaltfläche Löschen klicken, wird das Dialogfenster 'Löschen bestätigen' geöffnet, in dem Sie aufgefordert werden, den Löschvorgang zu bestätigen.
  • Wenn Sie auf die Schaltfläche Ja im Dialogfenster 'Löschen bestätigen' klicken, wird der Mitarbeiterdatensatz gelöscht, das Dialogfenster 'Löschen bestätigen' wird geschlossen, und die Liste der Mitarbeiter wird aktualisiert.
  • Wenn Sie auf Nein klicken, wird der Löschvorgang abgebrochen, und das Dialogfenster 'Löschen bestätigen' wird geschlossen.

Die Schaltfläche 'Löschen' so programmieren, dass sie je nach dem, ob eine Zeile in der Tabelle ausgewählt ist, aktiviert oder inaktiviert wird

Um die Schaltfläche 'Löschen' so zu programmieren, dass sie aktiviert oder inaktiviert sein kann, fügen Sie der Tabelle einen Listener hinzu, der die Schaltfläche aktiviert, wenn eine Zeile ausgewählt wird.

  1. Wählen Sie die employeesTable in der Sicht 'Java-Beans' aus. In der Quellensicht ist die folgende Zeile hervorgehoben:
    employeesTable = new JTable();
  2. Fügen Sie unmittelbar nach dieser Zeile der employeesTable einen neuen ListSelectionListener und das Ereignis 'valueChanged' hinzu:
    employeesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
       public void valueChanged(ListSelectionEvent e) {
         getDeleteButton().setEnabled(getEmployeesTable().getSelectedRowCount() != 0);
       }
    });
  3. Nach dem Hinzufügen dieser Codezeilen markiert der Quelleneditor sie als Fehler, bis Sie ListSelectListener und ListSelectionEvent importieren. Klicken Sie zum Hinzufügen der erforderlichen Importe im Hauptmenü auf Quelle > Importe verwalten. Daraufhin werden dem Importabschnitt der Klasse die folgenden Zeilen hinzugefügt:
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
Wenn nun eine Zeile in der Tabelle ausgewählt wird, wird die Schaltfläche Löschen aktiviert.

Das Dialogfenster 'Löschen bestätigen' so programmieren, dass es beim Klicken auf 'Löschen' geöffnet wird

Fügen Sie der Schaltfläche 'Löschen' das Ereignis 'actionPerformed' hinzu, und programmieren Sie das Ereignis für das Öffnen des Dialogfensters 'Löschen bestätigen'.

  1. Klicken Sie mit der rechten Maustaste auf die Schaltfläche Löschen, und wählen Sie Ereignisse > actionPerformed aus. Der folgende Ereignis-Stub wird der Methode 'getDeleteButton()' hinzugefügt:
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
         System.out.println("actionPerformed()"); 
         // TODO Auto-generated Event stub actionPerformed()
       }
    });
  2. Ersetzen Sie diesen generierten Stub durch den folgenden Code, durch den das Dialogfenster 'Löschen bestätigen' angezeigt wird, wenn auf die Schaltfläche geklickt wird:
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
         getConfirmDialog().setVisible(true);
       }
    });

Das Textfeld im Dialogfenster 'Löschen bestätigen' binden

Binden Sie das Textfeld im Dialogfenster 'Löschen bestätigen', um den Vornamen des Mitarbeiters anzuzeigen, der gelöscht werden soll.

  1. Wählen Sie in der Sicht 'Java-Beans' oder im Entwurfsbereich das Textfeld 'employeeToDeleteField' aus, und klicken Sie auf die Registerkarte Binden.

    Dialogfenster 'Löschen bestätigen' vor dem Binden

  2. Wählen Sie im Dialogfenster 'Felddaten-Bindings' das Datenobjekt 'selectedEmployeeRecord' und das Feld 'firstName' aus, und klicken Sie anschließend auf OK.

    Das Textfeld ist nun an die Spalte 'firstName' der ausgewählten Zeile in der employeesTable gebunden.

    Dialogfenster 'Löschen bestätigen' nach dem Binden

  3. Um sicherzustellen, dass dieses Feld schreibgeschützt ist, setzen Sie die Eigenschaft autoEditable für den Binder des Felds auf false.

Die Schaltfläche 'Ja' für das Ausführen des Löschvorgangs binden

Binden Sie die Schaltfläche Ja für den Aufruf der Methode 'removeEmployee(java.lang.Integer)' für den Web-Service.

  1. Wählen Sie die Schaltfläche Ja aus, und klicken Sie auf die Registerkarte Binden, um das Dialogfenster 'Komponentenaktion-Bindings' zu öffnen.
  2. Wählen Sie im Feld Quellentyp die Option Web-Service aus.
  3. Wählen Sie im Feld Datenquelle den Wert webServiceDataSource aus.
  4. Wählen Sie in der Liste Quellenservice den Eintrag removeEmployee(java.lang.Integer) aus.
  5. Das Feld Name wird automatisch in removeEmployeeAction geändert. Übernehmen Sie diesen Standardwert.
  6. Wählen Sie im Feld Argument den Wert selectedEmployeeRecord aus.
  7. Wählen Sie im Feld Eigenschaft den Wert employeeID aus. Da die Methode 'removeEmployee()' eine ganze Zahl als Argument verlangt, verwenden Sie die Mitarbeiter-ID des selectedEmployeeRecord.
  8. Setzen Sie den Anfangsstatus der Schaltfläche auf Aktiviert.
  9. Wählen Sie unter Aktivierungsregeln für jede Bedingung Ignorieren aus.

    Dieser Komponentenstatus bedeutet, dass die Schaltfläche 'Ja' stets aktiviert ist, da für einen Statuswechsel kein Grund vorliegt.

    Dialogfenster 'Komponentenaktion-Bindings' für die Schaltfläche 'Ja'

  10. Klicken Sie auf OK.

Ein Ereignis hinzufügen, um das Dialogfenster 'Löschen bestätigen' nach dem Löschen des Mitarbeiters auszublenden

In diesem Schritt fügen Sie dem Binder der Schaltfläche Ja (nicht der Schaltfläche Ja selbst) ein Ereignis hinzu. Das Dialogfenster 'Löschen bestätigen' soll geschlossen werden, wenn der Mitarbeiter gelöscht ist, d. h. nachdem der Binder den Service für die Datenquelle erfolgreich aufgerufen hat.

Fügen Sie den folgenden Code zur Methode 'getRemoveEmployeeAction()' hinzu:
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) {} 
});

Durch diesen Ereigniscode wird das Dialogfenster 'Löschen bestätigen' ausgeblendet, wenn die Binderaktion beendet ist.

Prüfpunkt für die Lerneinheit

Wenn Sie nun die Anwendung 'My Company Directory' ausführen, können Sie einen Mitarbeiter in der Tabelle auswählen, auf die Schaltfläche Löschen und anschließend auf die Schaltfläche Ja klicken, um den Löschvorgang zu bestätigen. Der Mitarbeiterdatensatz wird aus dem Verzeichnis entfernt, und die Liste der Mitarbeiter gibt das Löschen des Datensatzes wieder.

< Vorherige Lektion | Nächste Lektion >