Cómo escribir un calendario en java

Importar Java . borderlayout

Importar Java . /p>

Importar Java .awt .color del sistema;

Importar evento Java . p>

p>

Importar Java .awt evento del mouse;

Importar Java util . calendario;

Importar Java util . /p>

Importar Java.util.locale;

Importar Java.util.date;

Importar Java.util.string tokenizer;

Importar javax.swing.border factory;

Importar javax.swing.jbutton;

Importar javax.swing.jframe;

Importar javax.swing.jlabel;

Importar javax.swing.jpanel;

Importar javax.swing.jtextfield;

Importar javax.swing.jtogglebutton;

Importar javax .swing.swing constantes ;

Importar javax.swing.ui manager;

/**

* ltp gtTítulo: Calendario Swing

* ltp gt Descripción: Fecha de operación

* @Author duxu2004

* @Version 1.0.1

*/

Clase JCalendar extiende JPanel{

//Representación dinámica de año, mes y día.

año int privado = 0;

mes int privado = 0;

día int privado = 0

//panel principal;

JPanel privado Principal = nuevo JPanel();

//Panel del día

JPanel privado jPanelDay = nuevo JPanel();

//Panel lunar

JPanel privado JPanel mes = new JPanel();

//Ingrese la posición del año

Private JTextField Año = new JTextField();

//Ingrese la posición del mes

Mes privado de JTextField = new JTextField();

//Disminuya el mes

JButton privado mes abajo = nuevo JButton();

//Agregar mes

JButton privado MonthUp = nuevo JButton();

JPanel privado Botón JPanel = nuevo JPanel() ;

//Disminuir el año

Año privado del JButton abajo = nuevo JButton();

//Agregar el año

private JButton Year up = new JButton();

//Muestra la posición de la fecha.

private JLabel Out = new JLabel();

//Zona horaria de China, desde la cual la función de configuración de la zona horaria se puede ampliar en el futuro.

Configuración regional privada l = configuración regional.

Chino;

//Calendario principal

calendario gregoriano privado cal = nuevo calendario gregoriano(l);

//Panel del día de la semana

panel de semana privado JPanel = nuevo JPanel();

//Grupo de botones de día

JToggleButton privado[]días = nuevo JToggleButton[42];

/ /SkyPanel

Días de JPanel privado = nuevo JPanel();

//Etiqueta

JLabel privado JLabel 1 = nuevo JLabel();

JLabel privado JLabel 2 = nuevo JLabel();

JLabel privado JLabel 3 = nuevo JLabel();

JLabel privado JLabel 4 = nuevo JLabel();

JLabel privado JLabel 5 = nuevo JLabel();

JLabel privado JLabel 6 = nuevo JLabel();

JLabel privado JLabel 7 = nuevo JLabel();

p>

//Botón de fecha actualmente seleccionado

private JToggleButton cur = null

//Matriz de días en un mes, utilizada para obtener cuántos días que hay en el mes actual.

// 1 2 3 4 5 6 7 8 9 10 11 12

privado int[] mm={31, 28, 31, 30, 31, 30, 31, 30 , 31, 30, 31}

//Constructor de fecha vacía

JCalendar público() {

Pruebe {

JB init ( );

}

Catch (Excepción e) {

e .printstacktrace(); >}

//Constructor con configuración de fecha

JCalendar público(int año, int mes, int día){

cal.set(año, mes, día);

Pruebe {

JB init();

}

Capturar (Excepción e) {

JB init();

}

p>

e.printstacktrace();

}

}

//Constructor con entrada de calendario

Calendario público (calendario gregoriano) {

cal = calendar;

Pruebe {

JB init();

}

Catch (Excepción e) {

e .

}

//Con fecha Constructor de entrada

JCalendar público(fecha fecha){

cal.setTime(fecha);

Pruebe {

JB init ();

}

Catch (Excepción e) {

e. printstacktrace();

}

}

//Inicializar el componente

Private void jbInit() arroja una excepción {

//Inicializa el año, mes y día.

iniCalender();

este conjunto de diseño(new BorderLayout());

este conjunto de borde(fábrica de bordes. createraisedbevelborder());

this.setMaximumSize(nueva dimensión(200,200));

this.setMinimumSize(nueva dimensión(200,200));

this.setPreferredSize( nueva dimensión(200) , 200));

main . establecer diseño(new BorderLayout());

principal establecer fondo(color del sistema. información);

principal. establecer borde(nulo);

salir . establecer fondo(color . gris claro

salir .

Centro);

Out.setMaximumSize(nueva dimensión(100,19));

Out.setMinimumSize(nueva dimensión(100,19));

Out.setPreferredSize(nueva dimensión(100, 19));

jlabel 1. establecer primer plano(color. rojo);

jlabel 1. setorizontalignment(constantes de oscilación. centro);

jlabel 1. sethorizontaltextposition(swing constantes.center);

jlabel 1. settext("día");

jlabel 2. set foreground(color. azul );

jlabel 2. alineación horizontal (constantes de oscilación. centro);

jlabel 2. posición de texto horizontal (constantes de oscilación. centro);

jlabel 2. settext (" seis ");

jlabel 3. alineación horizontal(constantes de oscilación.centro);

jlabel 3.posición de texto horizontal(constantes de oscilación.centro);

jlabel 3. settext(" cinco ");

jlabel 4. alineación sehorizontal(constantes de oscilación. centro);

jlabel 4. sethorizontaltextposition(constantes de oscilación. centro);

JLabel4.setText("四");

jlabel 5. alineación horizontal (constantes de oscilación. centro);

jlabel 5. posición de texto horizontal (constantes de oscilación. centro);

jlabel 5. settext("tres");

jlabel 6. set border(null);

jlabel 6. alineación horizontal (constantes de oscilación. center);

jlabel 6. sethorizontaltextposition(constantes de oscilación.

centro);

jlabel 6. settext(" dos ");

jlabel 7. establecer fondo(color. gris claro);

jlabel 7. establecer primer plano (color. negro);

jlabel 7. establecer borde (nulo);

jlabel 7. alineación horizontal (constantes de oscilación. centro);

jlabel 7. sethorizontaltextposition(swing constantes.center);

jlabel 7. settext(" one ");

week panel. set background(ui manager. getcolor(" internal frame. activetitlegradient "));

panel de semana. set border(border factory. createetchedborder());

weekPanel.setLayout(new GridLayout(1,7));

semanaPanel.add(jLabel1, nulo);

semanaPanel.add(jLabel7, nulo);

semanaPanel.add(jLabel6, nulo);

semanaPanel.add(jLabel5, nulo);

semanaPanel.add(jLabel4, nulo);

semanaPanel.add(jLabel3, nulo); add(jLabel2, null);

setalignmentx((float)0.0);

setactionmap(null); color del sistema . información);

jpanelmonth . set design(new BorderLayout());

jpanelmonth . >mes . establecer borde(nulo);

mes .alineación horizontal(constantes de oscilación.

center);

mes . addmouse oyente(nuevo Java . awt . evento . adaptador de mouse(){

clic con el mouse vacío público (evento del mouse e){

mes _ clic del mouse(e);

}

});

mes . addkey oyente (nuevo Java . awt . evento . adaptador de clave() {

Clave de anulación pública (evento clave e) {

mes_keyped(e);

}

});

mes menos . set border(null);

mes menos . settext(" \ u25c 4 ");

mes menos . . action listener(){

acción de anulación pública realizada (evento de acción e){

mes menos _ acción realizada (e);

}< /p >

});

mesup . set border(null);

monthup . settext(" \ u25BA "); nuevo Java . awt . evento oyente de acción(){

acción nula pública realizada (evento de acción e){

MonthUp _ acción realizada (e);

}

});

jpanelbutton .establecer diseño(nulo);

jpanelbutton .establecer borde(nulo); . addcomponentlistener(new Java . awt . event . componente adaptador(){

componente vacío público redimensionado(Java . awt . evento . componente evento evt){

jpanelbuttoncomponentrezed(evt);

}

});

año.set border(border factory. createetchedborder());

Año.setMaximumSize (nuevo). dimensión(80,25));

Año.setMinimumSize(nueva dimensión(80,25));

Año.setPreferredSize(nueva dimensión(80,25)); p>

año .alineación horizontal(constantes de oscilación.

center);

año . addmouse oyente (nuevo Java . awt . evento . adaptador de mouse(){

clic con el mouse en vacío público (evento del mouse e){

>año _ clic del mouse (e);

}

});

año . addkey oyente (nuevo Java . awt . evento . adaptador de clave() {

Clave de anulación pública(evento clave e) {

año _ keyped(e);

}

});

año abajo. establecer borde(null);

YearDown.setMaximumSize(nueva dimensión(16,16));

YearDown.setMinimumSize(nueva dimensión(16) ) , 16));

YearDown.setPreferredSize(nueva dimensión(16,16));

YearDown.setSize(nueva dimensión(16,16));

año abajo . settext("▼");

año abajo . addactionlistener(new Java . awt . event . action listener(){

acción de anulación pública realizada (acción) evento e){

año abajo _ acción realizada(e);

}

});

año arriba establecer borde. ( nulo);

YearUp.setMaximumSize(nueva dimensión(16,16));

YearUp.setMinimumSize(nueva dimensión(16,16));

YearUp.setPreferredSize(nueva dimensión(16,16));

YearUp.setSize(nueva dimensión(16,16));

año arriba settext(" ▲")

año arriba. addactionlistener(new Java. awt. event. action listener(){

acción de anulación pública realizada (evento de acción e){

año. up _ acción realizada(e);

}

});

jpanelday establecer diseño(new BorderLayout());

Days.setLayout(new GridLayout(6, 7));

days. set background(system color. info);

for(int I = 0; i lt42; i ) {

días[I]= nuevo JToggleButton();

Días[I]. establecer borde (nulo);

天[我].

establecer fondo (color del sistema. información);

天[我]. alineación horizontal(constantes de oscilación.centro);

天[i]. setHorizontalTextPosition(swing constantes.center);

//días[i]. setSize(l, l);

天[i]. addActionListener(new Java . awt . event . actionlistener(){

acción nula pública realizada(evento de acción e){

día = entero . parse int((JToggleButton)e . getsource ()).getText());

showDate();

showDays();

}

});

days.add(days[I]);

}

this.add(Main, BorderLayout. North);

this .add(jPanelDay, BorderLayout. Center);

this.add(jPanelMonth, BorderLayout. South

Main.add(Año, BorderLayout. Center

);

Main.add(Out, BorderLayout. West);

Main.add(jPanelButton, BorderLayout. East);

jpanelbutton . >

jpanelbutton . add(año abajo);

jPanelDay.add(weekPanel, BorderLayout. North

jPanelDay.add(Days, BorderLayout. Center); p> p>

jPanelMonth.add(Mes, BorderLayout. Centro);

jPanelMonth.add(MesAbajo, BorderLayout. Oeste);

jPanelMonth.add(MesArriba, BorderLayout); .

Este);

mostrar mes();

mostrar año();

mostrarFecha();

mostrarDías();

}

//Panel de selección de año de redibujado personalizado

void jpanelbuttoncomponentrezed(Java . awt . event . componente evento evt){

YearUp .setLocation(0, 0);

YearDown.setLocation(0, año arriba. get height());

jpanelbutton(año arriba. getwidth(), año arriba. . getheight()* 2);

jPanelButton.setPreferredSize(nueva dimensión(YearUp.getWidth(), año arriba. getheight()* 2));

actualizar interfaz de usuario. ();

}

//Para pruebas

Public static void main(String[] args){

JFrame f = nuevo JFrame();

f . setcontentpane(nuevo JCalendar());

f paquete();

//f . ;

f . show();

}

//Agregar año

anular año arriba _ acción realizada (evento de acción e ){

año;

mostrar año();

mostrarFecha();

mostrarDías();

p>

}

//Reducir año

anular año abajo _ acción realizada(evento de acción e){

Año-;

mostrar año();

mostrarFecha();

mostrarDías();

}

//Disminuir meses

mes nulo abajo _ acción realizada(evento de acción e){

mes-;

if (mes lt0) {

mes= 11;

Año-;

mostrar año();

}

mostrar mes();

showDate();

showDays();

}

//Agregar mes

void MonthUp _ acción realizada( evento de acción e){

mes;

if(mes==12) {

mes=0;

año;< /p >

mostrar año();

}

mostrar mes();

mostrarFecha();

mostrarDías () ;

>}

//Inicializa el año, mes y día

void in calender(){

year=cal.get(calendar.year);

p>

mes=cal.get(calendario.mes);

día=cal.get(calendario.mes-día);

}

//Actualiza el mes

void showMonth(){

mes . settext(integer . tostring(mes 1) " mes "); >}

//Actualizar el año

void showYear(){

año . settext(integer . tostring(año) " año "); p>

}

//Fecha de actualización

void showDate(){

out . settext(integer . tostring(year) "-" entero. . tostring(mes 1) "-" entero . tostring(día));

}

//Vuelve a dibujar el panel de selección de fecha

void showDays(). {

cal.set(año, mes, 1);

int primer día de la semana = cal get(Calendario. día de la semana);

int. n = mm[mes];

if(cal . isleapyear(año) amp; ampmonth == 1)n

int I = 0; for(; i ltprimer día de la semana -1;i){

天[i]. set enable(false);

天[我]. establecer seleccionado (falso);

天[我]. setText(" ");

}

int d = 1;

for(;d lt= n;d){

天[i]. setText(integer . tostring(d));

天[i]. setEnabled(true);

if(d==día) días[i]. establecer seleccionado(verdadero);

else días[i]. establecer seleccionado(false);;

i;

}

for(;ilt42;i){

天[i ] . set enable(false);

天[我]. establecer seleccionado (falso);

天[我]. setText(" ");

}

}

//Haga clic en el panel del año para seleccionar la cadena de año completa.

void SelectionYear(){

año. setselectionstart(0);

año. fin de selección (año. gettext().length());

}

//Haga clic en el panel del mes para seleccionar la cadena del mes completa.

void SelectionMonth(){

mes . setselectionstart(0);

mes fin de selección (mes . gettext().length());

}

//El panel mensual responde a eventos de clic del mouse.

Mes anulado _ clic del mouse (evento del mouse e){

//mes de selección();

mes de entrada();

}

//Comprueba el mes introducido.

void inputMonth(){

String s;

If(Month.getText().endsWith("mes"))

{

s=Mes.getText(). substring(0,Month.getText().Length()-1);

}

else s = gettext();

mes = integer . parse int(s)-1;

this . show me();

}

//Respuesta del evento de pulsación del teclado del panel del mes

p>

vacío Mes _ tecla presionada(evento clave e){

if(e.getKeyChar()==10)

mes de entrada();

}

//El panel del año responde a eventos de clic del mouse.

año vacío _ clic del mouse (evento del mouse e){

//año de selección();

año de entrada();

}

//Año respuesta del evento de tecla presionada

void Año _ tecla presionada(evento de tecla e){

//System.out.print( Nuevo entero(e.getKeyChar()). valor del byte());

if(e.getKeyChar()==10)

año de entrada();

}

//Verifique la cadena de año ingresada.

void inputYear() {

String s;

If(Year.getText().endsWith("año"))

{

s=Año.getText(). subcadena(0, Año.getText(). Longitud()-1);

}

else s = año gettext();

año =. integer . parse int(s);

this . show me();

}

//Devuelve la fecha en forma de cadena, aaaa-mm- dd.

Cadena pública getDate(){ return out . gettext();}

//Ingrese la fecha en forma de cadena, aaaa-mm-dd.

public void setDate(fecha de cadena){

if (fecha!=null){

tokenizer de cadena f = tokenizer de cadena nueva(fecha, "- " );

if(f.hasMoreTokens())

año = entero . parse int(f . nexttoken());

if(f. hasMoreTokens()); ())

mes = entero . parse int(f . nexttoken());

if(f.hasMoreTokens())

día = entero . parse int(f . nexttoken());

cal.set(año, mes, día

}

muéstrame();

}

//Ingrese la fecha en forma de objeto de fecha.

Public void setTime(datedate){

cal.setTime(date);

this .inicalender();

this . muéstrame();

}

//Objeto de fecha de retorno

Fecha pública getTime(){ return cal .

//Devuelve la fecha actual.

public int getDay() {

Devolver el día;

}

//Establecer la fecha actual

public void setDay(int día) {

this.day = day

cal.set(este año, este mes, hoy);

this muéstrame ();

}

//Establecer el año actual

public void setYear(int año) {

this. .año = año

cal.set(este año, este mes, hoy

esto muéstrame();

// Devuelve el año actual.

public int getYear() {

Devuelve el año;

}

//Devuelve el mes actual.

public int getMonth() {

Devuelve el mes

}

//Establece el mes actual

Public void setMonth(int mes) {

este.mes =mes;

cal.set(este año, este mes, hoy);

this . muéstrame();

}

//Refresh

public void showMe(){

this showdays(). ;

p>

este . mostrar mes();

este .mostrar año(); >}

}

Clase pública TestJCalendar {

Public static void main(String[] args) {

JFrame f = new JFrame();

f . setcontentpane(nuevo JCalendar());

f .

f.show();

}

}