Ieri sera non mi sono accorto dei vari malfunzionamenti che avevo causato al programma. Ecco la versione corretta (spero)

codice:
   private void changeDays(int FistDayOfWeekOfMonth, int LastDay) {
        int numero;
        
        //nascondo tutti i pulsanti
        for (int i = 0; i < cmd.length; i++) {
            cmd[i].setVisible(false);
        }
        
        //abilito e rinomino soltanto quelli che mi servono
        for (int j = 0; j < LastDay; j++) {
            numero = j + FistDayOfWeekOfMonth - 1;
            cmd[numero].setText(String.valueOf(j+1));
            cmd[numero].setVisible(true);
            if ((j+1) == m_Day)
                cmd[numero].setSelected(true);
        }
    }