allora, ho questa situazione, mi trovo a dover compilare 6 JComboBox che costituiscono due date. il problema è che la seconda data non può mai essere inferiore alla prima.

per il momento ho scritto questo codice:
codice:
 /**
     *
     * @param giorno1 giorno della prima data
     * @param mese1 mese della prima data
     * @param anno1 anno della prima data
     * @param giorno2 giorno della seconda data
     * @param mese2 mese della seconda data
     * @param anno2 anno della seconda data
     * @return il metodo ritorna true se la prima data è antecedente alla
     * seconda, false altrimenti
     */
    private boolean compare2Dates(String giorno1, String mese1, String anno1, String giorno2, String mese2, String anno2) {
        Calendar c1 = Calendar.getInstance();
        Calendar c2 = Calendar.getInstance();
        c1.set(Integer.parseInt(anno1), Integer.parseInt(mese1), Integer.parseInt(giorno1));
        c2.set(Integer.parseInt(anno2), Integer.parseInt(mese2), Integer.parseInt(giorno2));
        if (c1.before(c2)) {
            return true;//prima data minore della seconda
        } else {
            return false;//seconda data maggiore o uguale della prima
        }
    }
codice:
 /**
     *
     * da inserire nei changeItemState dei vari comboBox
     */
    private void verificaData() {
        String giorno1 = (String) this.giorniInizio.getSelectedItem();
        String mese1 = (String) this.meseInizio.getSelectedItem();
        String anno1 = (String) this.annoInizio.getSelectedItem();
        String giorno2 = (String) this.giorniScadenza.getSelectedItem();
        String mese2 = (String) this.mesiScadenza.getSelectedItem();
        String anno2 = (String) this.annoScadenza.getSelectedItem();
        if (!(compare2Dates(giorno1, convertiMese(mese1), anno1, giorno2, convertiMese(mese2), anno2))) {
            this.giorniScadenza.setSelectedItem(this.giorniInizio.getSelectedItem());
            this.mesiScadenza.setSelectedItem(this.meseInizio.getSelectedItem());
            this.annoScadenza.setSelectedItem(this.annoInizio.getSelectedItem());
        }
    }
codice:
 /**
     *
     * @param mese Converte in numero in formato stringa un mese ricevuto in
     * formato stringa
     * @return Ritorna la stringa "1" se il parametro è Gennaio
     */
    private String convertiMese(String mese) {
        if (mese.equalsIgnoreCase("Gennaio")) {
            return "1";
        }
        if (mese.equalsIgnoreCase("febbraio")) {
            return "2";
        }

        if (mese.equalsIgnoreCase("marzo")) {
            return "3";
        }

        if (mese.equalsIgnoreCase("aprile")) {
            return "4";
        }

        if (mese.equalsIgnoreCase("maggio")) {
            return "5";
        }

        if (mese.equalsIgnoreCase("giugno")) {
            return "6";
        }

        if (mese.equalsIgnoreCase("luglio")) {
            return "7";
        }

        if (mese.equalsIgnoreCase("agosto")) {
            return "8";
        }

        if (mese.equalsIgnoreCase("settembre")) {
            return "9";
        }

        if (mese.equalsIgnoreCase("ottobre")) {
            return "10";
        }

        if (mese.equalsIgnoreCase("novembre")) {
            return "11";
        }

        if (mese.equalsIgnoreCase("dicembre")) {
            return "12";
        }
        return "-1";
    }
Poi per ogni changeItemState io richiamo il metodo verificaData(), ma dopo un paio di richiami mi và in java.lang.StackOverflowError.

Cosa potrebbe essere secondo la vostra esperienza? Io penso che ci sia un sovraccarico di richieste e quindi una carenza di risorse...avete metodi alternativi per fare quello che serve a me? Considerate che la struttura delle date non può modificarsi più di tanto....volevo provare ad usare JCalendar ma non credo che implementi in automatico una gestione delle date che possa soddisfare le mie richeste