Ok ho risolto con un flag:
codice:
boolean flag;
             do {
                 flag = false;
                 try{
                 k = Integer.parseInt(JOptionPane.showInputDialog(null, "Inserisci il numero di direzioni per costruire la matrice A: "));
                 }catch(NumberFormatException e ){
                     flag = true;
                 }
                 if ( k < 0 || flag == true) {
                     JOptionPane.showMessageDialog(null, "ATTENZIONE! È STATO INSERITO UN VALORE ERRATO.\nINSERIRE UN NUMERO INTERO POSITIVO", "ATTENZIONE!", JOptionPane.WARNING_MESSAGE); 
                 }
             } while (k < 0 || flag == true);
Solo che adesso se clikko su ANNULLA o sulla X in alto a destra nella finestra di dialogo continua ad stamparmi il messaggio ovviamente.
Qualcuno sà come posso fare a "dirlgi di uscire" dal programma se premo annulla o x?

Grazie anticipatamente