Home / Programmazione / Java / Finestra di conferma in Java
Mattepuffo

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!