Eccomi di nuovo a chiedere una mano.

Nei miei programmi prima di uscire chiedo conferma con un codice del tipo seguente:

int iAnswer = JOptionPane.showConfirmDialog(null, "Confermi l'uscita dal programma?", "Nome programma", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

if (iAnswer == JOptionPane.YES_OPTION)  System.exit(0);

che mi fa comparire una finestrella con il testo della domanda e i due pulsanti "SI" e "NO" con il "SI" preselezionato.

Di fatto se pigio <Enter> o <Alt><S> confermo l'uscita e funziona.
Se pigio <Alt><N> annullo l'uscita, la finestrella scompare e il programma resta in esecuzione.

Se invece pigio <Tab> in modo che il fuoco va sul punsante "NO" e poi pigio <Enter> e quindi dovrebbe restituire il valore JOptionPane.NO_OPTION, invece mi restituisce comunque JOptionPane.YES_OPTION, quindi il programma termina.

Qualcuno sa dirmi se c'è qualcosa che non ho capito io e quindi devo modificare il codice, oppure è un malfunzionamento della JOptionPane.showConfirmDialog?