Código
package horario; import java.util.HashMap; import java.util.Calendar; import java.util.GregorianCalendar; /** * Clase para obtener los datos necesarios para construir la interfaz grafica <code> Meses </code> * * @param año Los datos del objeto se crearan a pertir del año dado * @param mes Los datos del objeto se crearan a pertir del mes dado * @author Zero */ int[] dias={g.MONDAY, g.TUESDAY, g.WEDNESDAY,g.THURSDAY,g.FRIDAY,g.SATURDAY,g.SUNDAY}; /** * Arreglo utilizado para saber que día termina cada mes del año */ int[] last={31, 28, 31,30,31,30,31,31,30,31,30,31}; /** * Indica el año con que se construye este objeto */ int y=0; /** * Usado para conocer que indice tendra cada mes del año en el arreglo <code>last[]</code> */ HashMap<Integer, String> mez=null; /** * Indica el mes con que se construye este objeto */ int m=0; /** * Indica el primer día del mes */ int first=0; ZCalendar(int año, int mes){ this.set(ZCalendar.YEAR, año); this.set(ZCalendar.MONTH, mes); m=mes; mez=new HashMap<Integer, String>(); y=año; int w=0; mez.put(w, "Enero"); w++; mez.put(w, "Febrero"); w++; mez.put(w, "Marzo"); w++; mez.put(w, "Abril"); w++; mez.put(w, "Mayo"); w++; mez.put(w, "Junio"); w++; mez.put(w, "Julio"); w++; mez.put(w, "Agosto"); w++; mez.put(w, "Septiembre"); w++; mez.put(w, "Octubre"); w++; mez.put(w, "Noviembre"); w++; mez.put(w, "Diciembre"); w++; } /** * Devuelve la posicion del <code>ZLabel</code> desde donde empezarán los días del mes */ int getFirstDayOfMonth(){ int d=0; this.set(this.DAY_OF_MONTH, this.DAY_OF_MONTH - this.DAY_OF_MONTH); d=this.get(this.DAY_OF_WEEK); d++; first=d; return d; } /** * Devuelve la posicion del <code>ZLabel</code> en donde terminarán los días del mes */ int getLastDayOfTheMonth(){ int x=0; if(m==1){ return inFeb(); } if(last[m]==30){ return in30(); } if(last[m]==31){ return in31(); } return x; } private int in30(){ switch(first){ case 0: return 29; case 1: return 30; case 2: return 31; case 3: return 32; case 4: return 33; case 5: return 34; case 6: return 35; case 7: return 36; } return 10; } private int in31(){ switch(first){ case 0: return 30; case 1: return 31; case 2: return 32; case 3: return 33; case 4: return 34; case 5: return 35; case 6: return 36; case 7: return 37; } return 10; } private int inFeb(){ if(isBis(y)){ switch(first){ case 0: return 28; case 1: return 29; case 2: return 30; case 3: return 31; case 4: return 32; case 5: return 33; case 6: return 34; case 7: return 35; } }else{ switch(first){ case 0: return 27; case 1: return 28; case 2: return 29; case 3: return 30; case 4: return 31; case 5: return 32; case 6: return 33; case 7: return 34; } } return 10; } /** * Devuelve <code>true</code> si <code>x</code> es multiplo de 4 * * @param x Representa el año que se desea saber si es bisiesto */ boolean isBis(int x){ if(x%4==0){ return true; }else{ return false; } } /** * Devuelve el nombre del mes correspondiente * * @return m El nombre del mes con el que se construye este objeto */ return mez.get(this.m); } /** * Devuelve el año correspondiente * * @return m El año con el que se construye este objeto */ return y+""; } }
Saludos