Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo escribir un calendario en java

Cómo escribir un calendario en java

importar java.awt.BorderLayout;

importar java.awt.Color;

importar java.awt.Dimension;

importar java.awt.GridLayout;

importar java.awt.SystemColor;

importar java.awt.event.ActionEvent;

importar java.awt.event. KeyEvent;

importar java.awt.event.MouseEvent;

importar java.util.Calendar;

importar java.util.GregorianCalendar;

importar java.util.Locale;

importar java.util.Date;

importar java.util.StringTokenizer;

importar javax.swing. BorderFactory;

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.SwingConstants;

import javax.swing.UIManager;

/**

*

Título: Calendario de swing

*

Descripción: Fecha de operación

* @autor duxu2004

* @versión 1.0.1

*/

class JCalendar extiende JPanel{

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

private int año=0;

private int mes=0;

private int day=0;

//Panel principal

private JPanel Main = new JPanel();

//Día Panel

JPanel privado jPanelDay = nuevo JPanel();

//Mes Panel

JPanel privado jPanelMonth = nuevo JPanel();

// Posición de entrada del año

private JTextField Año = new JTextField();

//Posición de entrada del mes

private JTextField Mes = new JTextField();

//Disminuir el mes

private JButton MonthDown = new JButton();

//Aumentar el mes

JButton privado MonthUp = nuevo JButton();

JPanel privado jPanelButton = nuevo JPanel();

//Disminuir el año

JButton privado YearDown = nuevo JButton ( );

//Aumentar el año

private JButton YearUp = new JButton();

//Mostrar la posición de la fecha

private JLabel Out = new JLabel();

//Zona horaria de China, puedes ampliar la función de configuración de la zona horaria desde aquí en el futuro

private Locale l= Locale.CHINESE;

//Calendario principal

private GregorianCalendar cal=new GregorianCalendar(l);

//Panel semanal

private JPanel WeekPanel=new JPanel();

//Grupo de botones de día

private JToggleButton[] días=new JToggleButton[42];

//Día panel

JPanel privado Días = nuevo JPanel();

//Etiqueta

JLabel privado jLabel1 = nuevo JLabel();

JLabel privado jLabel2 = nuevo JLabel();

JLabel privado jLabel3 = nuevo JLabel();

JLabel privado jLabel4 = nuevo JLabel();

JLabel privado jLabel5 = nuevo JLabel();

p>

JLabel privado jLabel6 = nuevo JLabel();

JLabel privado jLabel7 = nuevo JLabel();

// Botón de días actualmente seleccionados

private JToggleButton cur=null;

//Matriz de días del mes, utilizada para obtener cuántos días hay en el mes

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

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

//Constructor de fecha vacía

public JCalendar() {

prueba {

jbInit();

}

catch(Excepción e) {

e.printStackTrace();

}

}

//Constructor con configuración de fecha

public JCalendar(int año, int mes, int día) {

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

prueba {

jbInit();

}

captura (Excepción e) {

e.printStackTrace();

}

}

//Constructor con entrada de calendario

public JCalendar(calendario GregorianCalendar) {

cal=calendar;

prueba {

jbInit();

}

catch (Excepción e) {

e.printStackTrace();

}

}

//Constructor con entrada de fecha

public JCalendar(Fecha fecha) {

cal.setTime(fecha);

intente {

jbInit();

}

catch (Excepción e) {

e.printStackTrace ();

}

}

//Inicializar componente

private void jbInit() lanza una excepción {

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

iniCalender();

this.setLayout(new BorderLayout());

this.setBorder(BorderFactory .createRaisedBevelBorder( ));

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

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

this.setPreferredSize(new Dimension(200, 200));

Main.setLayout(new BorderLayout());

Main.setBackground(SystemColor.info);

Main.setBorder(null);

Out.setBackground(Color.lightGray);

Out.setHorizontalAlignment(SwingConstants.CENTER);

Fuera .setMaximumSize(nueva Dimensión(100, 19));

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

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

jLabel1.setForeground(Color.red);

jLabel1.setHorizontalAlignment(SwingConstants.CENTER);

jLabel1.setHorizontalTextPosition(S

wingConstants.CENTER);

jLabel1.setText("日");

jLabel2.setForeground(Color.blue);

jLabel2.setHorizontalAlignment(SwingConstants. CENTRO);

jLabel2.setHorizontalTextPosition(SwingConstants.CENTER);

jLabel2.setText("六");

jLabel3.setHorizontalAlignment(SwingConstants.CENTER) ;

jLabel3.setHorizontalTextPosition(SwingConstants.CENTER);

jLabel3.setText("五");

jLabel4.setHorizontalAlignment(SwingConstants.CENTER);

jLabel4.setHorizontalTextPosition(SwingConstants.CENTER);

jLabel4.setText("四");

jLabel5.setHorizontalAlignment(SwingConstants.CENTER);

jLabel5.setHorizontalTextPosition(SwingConstants.CENTER);

jLabel5.setText("三");

jLabel6.setBorder(null);

jLabel6.setHorizontalAlignment(SwingConstants.CENTER);

jLabel6.setHorizontalTextPosition(SwingConstants.CENTER);

jLabel6.setText("二");

jLabel7. setBackground(Color.lightGray);

jLabel7.setForeground(Color.black);

jLabel7.setBorder(null);

jLabel7.setHorizontalAlignment(SwingConstants. CENTRO);

jLabel7.setHorizontalTextPosition(SwingConstants.CENTER);

jLabel7.setText("一");

semanaPanel.setBackground(UIManager.getColor( "InternalFrame.activeTitleGradient"));

weekPanel.setBorder(BorderFactory.createEtchedBorder());

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

semanaPanel.add(jLabel1,

null);

weekPanel.add(jLabel7, null);

weekPanel.add(jLabel6, null);

weekPanel.add(jLabel5, null) ;

weekPanel.add(jLabel4, null);

weekPanel.add(jLabel3, null);

weekPanel.add(jLabel2, null); /p>

MonthUp.setAlignmentX((float) 0.0);

MonthUp.setActionMap(null);

jPanelMonth.setBackground(SystemColor.info);

jPanelMonth.setLayout(new BorderLayout());

jPanelMonth.setBorder(BorderFactory.createEtchedBorder());

Month.setBorder(null);

Month.setHorizontalAlignment(SwingConstants.CENTER);

Month.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(MouseEvent e) { p>

Month_mouseClicked(e);

}

});

Month.addKeyListener(new java.awt.event.KeyAdapter( ) {

public void keyPressed(KeyEvent e) {

Month_keyPressed(e);

}

});

MonthDown.setBorder(null);

MonthDown.setText("\u25C4");

MonthDown.addActionListener(new java.awt.event.ActionListener() {

p>

public void actionPerformed(ActionEvent e) {

MonthDown_actionPerformed(e);

}

});

MonthUp.setBorder(null);

MonthUp.setText("\u25BA");

MonthUp.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

MonthUp_actionPerformed(e);

}

});

jPanelButton.setLayout(null);

jPanelButton.setBorder(null);

jPanelButton.addComponentListener( nuevo java.awt.event.ComponentAdapter() {

public void componenteResized(java.awt.event.ComponentEvent evt) {

jPanelButtonComponentResized(evt);

}

});

Año.setBorder(BorderFactory.createEtchedBorder());

Año.setMaximumSize(nueva Dimensión(80, 25));

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

Año.setPreferredSize(nueva Dimensión(80, 25));

Año.setHorizontalAlignment (SwingConstants.CENTER);

Año.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(MouseEvent e) {

Year_mouseClicked(e);

}

});

Year.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(KeyEvent e) {

Year_keyPressed(e);

}

});

YearDown.setBorder (nulo);

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));

YearDown.setText("▼");

YearDown.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

YearDown_actionPerformed(e);

}

});

YearUp.setBo

rder(null);

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));

YearUp.setText("▲") ;

YearUp.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

YearUp_actionPerformed(e);

}

});

jPanelDay.setLayout(nuevo BorderLayout());

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

Days.setBackground(SystemColor.info);

for(int i=0;i<42;i++){

días. [i]=nuevo JToggleButton();

días[i].setBorder(null);

días[i].setBackground(SystemColor.info);

días[i].setHorizontalAlignment(SwingConstants.CENTER);

días[i].setHorizontalTextPosition(SwingConstants.CENTER);

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

días[i].addActionListener(new java.awt.event.ActionListener(){

public void actionPerformed(ActionEvent e) {

día=Integer.parseInt(((JToggleButton)e.getSource()).getText());

showDate();

showDays();

}

});

Días.add(días[i]);

}

this.add(Principal , BorderLayout.NORTH);

this.add(jPanelDay, BorderLayout.CENTER);

this.add(jPanelMonth, BorderLayout.SOUTH);

Principal .add(Año, BorderLayout.CENTER);

Main.add(Fuera, BorderLayout.WEST);

Main.add(jPanelButton, BorderLayout.EAST);

jPanelButton.add(YearUp);

jPanelButton.add(YearDown);

jPanelDay.add(weekPanel,BorderLayout.NORTH);

jPanelDay.add(Days, BorderLayout.CENTER);

jPanelMonth.add(Mes, BorderLayout.CENTER);

jPanelMonth.add(MesAbajo, BorderLayout.WEST);

jPanelMonth.add(MesArriba, BorderLayout.EAST);

showMes();

showAño();

showDate();

showDays();

}

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

void jPanelButtonComponentResized(java.awt.event.ComponentEvent evt){

YearUp.setLocation(0 ,0 );

YearDown.setLocation(0,YearUp.getHeight());

jPanelButton.setSize(YearUp.getWidth(),YearUp.getHeight()*2); p>

jPanelButton.setPreferredSize(new Dimension(YearUp.getWidth(),YearUp.getHeight()*2));

jPanelButton.updateUI();

}

//Para probar

public static void main(String[] args){

JFrame f=new JFrame();

f.setContentPane(new JCalendar());

f.pack();

//f.setResizable(false);

f. );

}

//Añadir año

void YearUp_actionPerformed(ActionEvent e) {

año++;

showYear();

showDate();

showDays();

}

//Disminuir el año

p>

void YearDown_actionPerformed(ActionEvent e) {

año--;

showYear();

showDate();

mostrarDías();

}

<

p> //Disminuir el mes

void MonthDown_actionPerformed(ActionEvent e) {

mes--;

if(mes<0) {

mes = 11;

año--;

showYear();

}

showMonth();

showDate();

showDays();

}

//Agregar mes

void MonthUp_actionPerformed(ActionEvent e ) {

mes++;

if(mes==12) {

mes=0;

año++;

showAño();

}

showMes();

showDate();

showDays();

p>

}

//Inicializar año, mes y día

void iniCalender(){

año=cal.get(Calendario .AÑO);

mes=cal.get(Calendar.MONTH);

día=cal.get(Calendar.DAY_OF_MONTH);

}

//Actualiza el mes

void showMonth(){

Month.setText(Integer.toString(month+1)+"month");

}

//Actualiza el año

void showYear(){

Year.setText(Integer.toString(year)+"year" );

}

//Fecha de actualización

void showDate(){

Out.setText(Integer.toString(año) +"-"+Integer.toString(mes+1)+"-"+Integer.toString(día));

}

//Volver a dibujar el panel de selección de día

void showDays () {

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

int primerDíaDeLaSemana = cal.get(Calendar.DAY_OF_WEEK);

int n= mm[mes];

if(cal.isLeapYear(año)&&month==1) n++;

int i=0;

for(;i

días[i].setEnabled(false);

días[i].setSelected(false);

días [i].setText("");

}

int d=1;

for(;d<=n;d++){

días[i].setText(Integer.toString(d));

días[i].setEnabled(true);

if(d==día) días[i].setSelected(true);

demás días[i].setSelected (falso);;

i++;

}

durante(;i<42;i++){

días[i] .setEnabled(false);

días[i].setSelected(false);

días[i].setText("");

}

}

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

void SelectionYear(){

Year.setSelectionStart(0 ) ;

Year.setSelectionEnd(Year.getText().length());

}

//Haga clic en el panel del mes para seleccionar el mes completo string

void SelectionMonth(){

Month.setSelectionStart(0);

Month.setSelectionEnd(Month.getText().length());

}

//El panel del mes responde a eventos de clic del mouse

void Month_mouseClicked(MouseEvent e) {

//SelectionMonth() ;

inputMonth();

}

//Comprueba el mes de entrada

void inputMonth(){

Cadena s;

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

{

s=Month.getText(). subcadena(0, Mes.getText().length()-1);

}

else s=Mes.getText();

mes= Integer.parseInt (s)-1;

this.showMe();

}

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

void Month_keyPressed(KeyEvent e) {

if(e.getKeyChar()==10)

inputMonth();

}

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

void Year_mouseClicked(MouseEvent e) {

//SelectionYear();

inputYear ();

}

//Año respuesta al evento de tecla del teclado

void Year_keyPre

ssed(KeyEvent e) {

//System.out.print(new Integer(e.getKeyChar()).byteValue());

if(e.getKeyChar() ==10)

inputYear();

}

//Comprueba la cadena del año de entrada

void inputYear() {

Cadena s;

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

{

s=Año . getText().substring(0,Año.getText().length()-1);

}

else s=Año.getText();

año=Integer.parseInt(s);

this.showMe();

}

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

public String getDate(){return Out.getText();}

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

public void setDate(String fecha){

if(date!=null){

StringTokenizer f = new StringTokenizer(fecha, "-");

if(f.hasMoreTokens())

año = Integer.parseInt(f.nextToken());

if(f.hasMoreTokens())

mes = Integer.parseInt(f.nextToken());

if(f.hasMoreTokens())

día = Integer.parseInt(f.nextToken());

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

}

this.showMe();

}

p>

//Ingrese la fecha como objeto de fecha

public void setTime(Fecha fecha){

cal.setTime(fecha);

this .iniCalender();

this.showMe();

}

//Objeto de fecha de retorno

fecha pública getTime() {return cal.getTime();}

//Devuelve el día actual

public int getDay() {

return day;

}

//Establece el día actual

public void setDay(int day) {

this.day = day;

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

>

this.showMe();

}

//Establecer el año actual

public void setYear(int año) {

este.año = año;

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

this.showMe();

}

//Devuelve el año actual

public int getYear() {

return año;

}

//Devuelve el mes actual

public int getMonth() {

retorno mes;

}

/ /Establecer el mes actual

public void setMonth(int mes) {

this.month = mes;

cal.set(this.year,this. mes,este.día);

this.showMe();

}

//Actualizar

public void showMe() {

this.showDays();

this.showMonth();

this.showYear();

this.showDate ();

}

}

clase pública TestJCalendar {

public static void main(String[] args) {

JFrame f=nuevo JFrame();

f.setContentPane(nuevo JCalendar());

f.pack();

//f.setResizable(false);

f.show();

}

}