Finestra di conferma in Java

Finestra di conferma in Java

Può capitare che impostiamo delle operazioni potenzialmente pericolose nelle nostre applicazioni.

Se stiamo programmando in Java e usiamo le SWING possiamo usare uno dei tanto JOpionPane disponibili per ottenere una finestra di conferma.

Vediamo come.

Nello speicifco la finestra mi permette di dare conferma o meno sulla cancellazione di un record di un db MySQL perso da una JTable.

Quindi selezioni una ruga, clicco su un JButton per la cancellazione e mi compare la finestra di conferma.

 

Vediamo l'evento impostato da Netbeans:

private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
if (tableData.getRowCount() > 0 && tableData.getColumnCount() > 0) { // controlla che la JTable no sia vuota
if (tableData.getSelectedRowCount() > 0) { // controlla che sia stato selezionato una riga della JTable
int confirm = JOptionPane.showConfirmDialog(null, "Delete this book?", "Delete book", JOptionPane.YES_NO_OPTION);
if (confirm == JOptionPane.YES_OPTION) { // controlla la scelta fatta
try {
Object value = tableData.getValueAt(tableData.getSelectedRow(), 0);
dbman.delBook(Integer.parseInt(value.toString()));
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
} catch (ClassNotFoundException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
} else {
JOptionPane.showMessageDialog(null, "Select a row to delete");
}
} else {
JOptionPane.showMessageDialog(null, "Do the connection first");
}
}

Prima faccio due controlli rispettivamente per vedere se la JTable è caricata e se ho selezionato una riga.

Passati i controlli creo una variabile int confirm che creerà la finestra con JOptionPane.showConfirmDialog().

Il primo parametro non ci interessa.

Il secondo è la domanda che ci viene fatta.

Il terzo è il titolo della finestra.

L'ultimo imposta l'opzione YES_NO_OPTION che è abbastanza intuitiva.

Poi c'è l'ultimo if che verifica se abbiamo cliccato su SI o NO.

Se abbiamo dato SI esegue l'operazione che ci interessa (in questo caso cancellazione del record).

Ciauz!