Cómo escribir un calendario en java
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(); p >
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 { p>
//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. 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-; p>
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();
}
}