
Originariamente inviata da
andbin
Ah, ok, ora mi è più chiaro. Però avrei ancora un dubbio: quando l'utente decide di "chiudere" la sequenza, intendi che non verranno più visualizzati ulteriori warning (ma vada comunque avanti con il processamento dei restanti mesi) oppure che termini proprio tutto il ciclo di processamento dei mesi?
Comunque tieni presente che gli showMessageDialog hanno tipo di ritorno void, quindi non puoi sapere nulla in quel senso!
Le possibilità comunque ci sono:
- usare un altro dei showXXXDialog, magari con più pulsanti es. "Continua", "Termina".
- usare ancora showMessageDialog mettendo però nel message un JCheckBox del tipo (come succede in molti software) es. "Non mostrare più per questa sequenza" e testarlo dopo il showMessageDialog (ti ricordo che il message è Object e può essere molte cose, vedi javadoc).
Si esatto, cioè non deve più visualizzare il messaggio dei mesi ma va avanti con il processamento dei mesi che seguono (se ce ne sono).
Ho fatto così:
codice:
if (contaMesi == 12) {
List<Mese> mese = ricercaMese.findDirectory(dir, pathname.getData());
for (i = 0; i < righe; i++) {
tabellaMesi.setValueAt(mese.get(i).getNomeMese(), i, 0);
tabellaMesi.setValueAt(mese.get(i).getMediaMeseIrradianzaG(), i, 1);
tabellaMesi.setValueAt(mese.get(i).getMediaMeseIrradianzaGd(), i, 2);
tabellaMesi.setValueAt(mese.get(i).getMediaMeseIrradianzaGc(), i, 3);
tabellaMesi.setValueAt(mese.get(i).getOreTotaliMese(), i, 4);
}
} else {
i = 0; int j = 0;
for (ApriFileMese.MeseDellAnno m : ApriFileMese.MeseDellAnno.values()) {
fileMese = (dir + File.separator + pathname.getData() + File.separator + m + ".txt");
File fileListMese = new File(fileMese);
System.out.println(fileListMese);
System.out.println(m);
if (fileListMese.exists() == false) {
JOptionPane.showMessageDialog(this,
"The radiation data for the month of " + m + " are not present",
"Attention",
JOptionPane.WARNING_MESSAGE,
icon);
tabellaMesi.setValueAt(" ", i, 0);
tabellaMesi.setValueAt(" ", i, 1);
tabellaMesi.setValueAt(" ", i, 2);
tabellaMesi.setValueAt(" ", i, 3);
tabellaMesi.setValueAt(" ", i, 4);
i++;
} else if (fileListMese.exists() == true) {
List<Mese> mese = ricercaMese.findDirectory(dir, pathname.getData());
tabellaMesi.setValueAt(mese.get(j).getNomeMese(), i, 0);
tabellaMesi.setValueAt(mese.get(j).getMediaMeseIrradianzaG(), i, 1);
tabellaMesi.setValueAt(mese.get(j).getMediaMeseIrradianzaGd(), i, 2);
tabellaMesi.setValueAt(mese.get(j).getMediaMeseIrradianzaGc(), i, 3);
tabellaMesi.setValueAt(mese.get(j).getOreTotaliMese(), i, 4);
i++;
j++;
}
System.out.println(i);
}
}
quindi se i mesi esistono tutti me li apre e mi mette i dati nella JTable. Se invece non sono 12 allora comincia a dirmi tramite warning message (uno per volta) quello che manca, se qualcuno è presente mi prende i dati e me li inserisce e passa al successivo ..fino a Dicembre.
Però se l'utente decidesse di non visualizzare più i messaggi, comunque deve andare avanti nel processarli. E' solo una questione di far decidere all'utente di smettere di visualizzare i messaggi dei mesi mancanti se si scoccia.
p.s. anche io avevo pensato ad un altro showXXXDialog, ma volevo capire se si poteva fare con il Warning Message prima..che ne pensi ???