< Indietro | Avanti >

Lezione 2.5: Abilitazione del pulsante Elimina e della finestra di conferma

In questa lezione, l'applicazione My Company Directory viene programmata per eliminare un record di dipendente.

L'elenco seguente descrive il comportamento dell'applicazione:
  • Quando si seleziona un dipendente nella tabella, il pulsante Elimina viene abilitato.
  • Quando si fa clic sul pulsante Elimina, viene visualizzata la finestra di dialogo Conferma eliminazione che richiede di confermare dell'eliminazione.
  • Scegliendo nella finestra di dialogo Conferma eliminazione, il record del dipendente viene eliminato, la finestra Conferma eliminazione viene chiusa e l'elenco di dipendenti viene aggiornato.
  • Scegliendo No, l'eliminazione viene annullata e la finestra di dialogo Conferma eliminazione viene chiusa.

Programmazione del pulsante Elimina in modo che venga abilitato o disabilitato in base alla selezione di una riga nella tabella

Per programmare l'abilitazione e la disabilitazione del pulsante Elimina, aggiungere un listener alla tabella che abiliti il pulsante in base alla selezione di una riga.

  1. Selezionare employeesTable nella vista Bean Java. La vista di origine evidenzia la riga seguente:
    employeesTable = new JTable();
  2. Dopo questa riga, aggiungere un nuovo evento ListSelectionListener e valueChanged ad employeesTable:
    employeesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
       public void valueChanged(ListSelectionEvent e) {
         getDeleteButton().setEnabled(getEmployeesTable().getSelectedRowCount() != 0);
       }
    });
  3. Dopo aver aggiunto le righe di codice, l'editor di origine le contrassegna come errori fino a quando non si importa ListSelectListener e ListSelectionEvent. Per aggiungere le importazioni richieste, scegliere Origine > Organizza importazioni nel menu principale. Le seguenti righe vengono aggiunte alla sezione delle importazioni della classe:
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
Quando si seleziona una riga nella tabella, il pulsante Elimina viene abilitato.

Programmazione della finestra di Conferma eliminazione affinché venga aperta quando si fa clic su Elimina

Aggiungere un evento actionPerformed al pulsante Elimina e programmare l'evento affinché apra la finestra di dialogo Conferma eliminazione.

  1. Selezionare il pulsante Elimina con il pulsante destro del mouse e scegliere Eventi > actionPerformed. Il seguente stub di evento viene aggiunto al metodo getDeleteButton():
    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. Sostituire questo stub generato con il seguente codice, che imposta la finestra Conferma eliminazione in modo che sia visibile quando si fa clic sul pulsante:
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
         getConfirmDialog().setVisible(true);
       }
    });

Binding del campo di testo nella finestra Conferma eliminazione

Eseguire il binding del campo di testo nella finestra Conferma eliminazione per visualizzare il nome del dipendente da eliminare.

  1. Nella vista Bean Java o nell'area di progettazione, selezionare il campo di testo employeeToDeleteField e fare clic sulla scheda Binding.

    Finestra Conferma eliminazione prima del binding

  2. Nella finestra Binding di dati campo, selezionare l'oggetto dati selectedEmployeeRecord e il campo firstName, quindi scegliere OK.

    Il campo di testo è ora associato alla colonna firstName della riga selezionata in employeesTable.

    Finestra Conferma eliminazione dopo il binding

  3. Per assicurarsi che questo campo sia di sola lettura, impostare la proprietà autoEditable per il binder del campo su false.

Binding del pulsante Sì per eseguire l'eliminazione

Eseguire il binding del pulsante per richiamare il metodo removeEmployee(java.lang.Integer) sul servizio Web.

  1. Selezionare il pulsante nell'area di progettazione e scegliere la scheda Binding per aprire la finestra Binding azioni componente.
  2. Nel campo Tipo di origine, selezionare Servizio Web.
  3. Nel campo Origine dati, selezionare webServiceDataSource.
  4. Nell'elenco Servizio di origine, selezionare removeEmployee(java.lang.Integer).
  5. Il campo Nome viene automaticamente modificato in removeEmployeeAction. Accettare questo valore predefinito.
  6. Nel campo Argomento, selezionare selectedEmployeeRecord.
  7. Nel campo Proprietà, selezionare employeeID. Poiché il metodo removeEmployee() utilizza un numero intero come argomento, utilizzare l'ID dipendente del selectedEmployeeRecord.
  8. Impostare lo Stato iniziale del pulsante su Abilitato.
  9. Per Regole di abilitazione, selezionare Ignora per ciascuna condizione.

    Lo stato di questo componente indica che il pulsante Sì sarà sempre abilitato, perché non c'è bisogno di modificarlo.

    Finestra Binding di azioni componente per il pulsante Sì

  10. Scegliere OK.

Aggiunta di un evento per nascondere la finestra Conferma eliminazione dopo l'eliminazione del dipendente

A questo punto, è necessario aggiungere un evento al binder del pulsante (non allo stesso pulsante ). Inoltre, bisognerà impostare la finestra Conferma eliminazione affinché venga chiusa dopo la rimozione del dipendente, ovvero dopo che il binder ha richiamato correttamente il servizio sull'origine dati.

Aggiungere il seguente codice al metodo getRemoveEmployeeAction():
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) {} 
});

Il codice di evento nasconde la finestra Conferma eliminazione dopo aver eseguito l'azione del binder.

Riepilogo della lezione

Adesso, quando viene eseguita l'applicazione My Company Directory, sarà possibile selezionare un dipendente nella tabella, fare clic su Elimina e scegliere per confermare l'eliminazione. Il record del dipendente verrà eliminato dalla struttura e l'elenco dei dipendenti verrà aggiornato.

< Indietro | Avanti >