一个可以显示2002年日历的代码程序
//========================MyCalendar.java=====================
// Topic : Calendar
// Author: Dy1978
// Date : 2002-1-31
// Remark:
//============================================================
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//import MyWindowListener;
public class MyCalendar extends JFrame implements ItemListener
{
private Container c;
private JPanel j_MyPanel=new JPanel();
private JLabel arr_DateLabel[] = new JLabel[49];
private String months[] =
{"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
private JComboBox comboBox = new JComboBox (months);
private int i_Days = 31;
private int i_Week = 2;
private int i_Month = 1;
private String s_Week = null;
// Construct Method
public MyCalendar()
{
super("日历");
c = getContentPane();
c.setLayout(new BorderLayout());
// Add comboBox
comboBox.setMaximumRowCount(6);
//***************************
//next sentence unknow before
//***************************
comboBox.addItemListener(this);
c.add(comboBox,BorderLayout.NORTH);
// Add j_MyPanel
j_MyPanel.setLayout(new GridLayout(7,7));
setCanlendar(i_Days,i_Week);
c.add(j_MyPanel,BorderLayout.CENTER);
setSize(600,400);
show();
}
// Method of Set Date Label of Calendar
public JLabel setDateLabel(int i_Date)
{
arr_DateLabel[i_Date]=new JLabel();
arr_DateLabel[i_Date].setName("JLabel"+String.valueOf(i_Date));
arr_DateLabel[i_Date].setText(String.valueOf(i_Date-i_Week-6));
arr_DateLabel[i_Date].setHorizontalAlignment(0);
return arr_DateLabel[i_Date];
}
// Method of Set Space Label of Calendar
public JLabel setSpaceLabel(int i_beginWeek)
{
arr_DateLabel[i_beginWeek]=new JLabel();
arr_DateLabel[i_beginWeek].setName("JLabel"+String.valueOf(i_beginWeek));
arr_DateLabel[i_beginWeek].setText("");
arr_DateLabel[i_beginWeek].setHorizontalAlignment(0);
return arr_DateLabel[i_beginWeek];
}
// Method of Set Title of Calendar
public JLabel setTitleLabel(int i_titleWeek)
{
switch (i_titleWeek)
{
case 0: s_Week = "日"; break;
case 1: s_Week = "一"; break;
case 2: s_Week = "二"; break;
case 3: s_Week = "三"; break;
case 4: s_Week = "四"; break;
case 5: s_Week = "五"; break;
case 6: s_Week = "六"; break;
}
arr_DateLabel[i_titleWeek]=new JLabel();
arr_DateLabel[i_titleWeek].setName("JLabelw"+String.valueOf(i_titleWeek));
arr_DateLabel[i_titleWeek].setText(s_Week);
arr_DateLabel[i_titleWeek].setForeground(Color.red);
arr_DateLabel[i_titleWeek].setHorizontalAlignment(0);
return arr_DateLabel[i_titleWeek];
}
// Method of Set Calendar : Add Label to j_MyPanel
public void setCanlendar(int days,int week)
{
for (int a=0;a<7;a++)
{
j_MyPanel.add(setTitleLabel(a),setTitleLabel(a).getName());
}
for (int i=0+7;i<i_Week+7;i++)
{
j_MyPanel.add(setSpaceLabel(i),setSpaceLabel(i).getName());
}
for (int l=week+7;l<days+week+7;l++)
{
j_MyPanel.add(setDateLabel(l),setDateLabel(l).getName());
}
for (int k=days+week+7;k<49;k++)
{
j_MyPanel.add(setSpaceLabel(k),setSpaceLabel(k).getName());
}
}
//ItemStateChanged Method : Date of Calendar Changed With Selected Month
public void itemStateChanged(ItemEvent e)
{
//***************************
//next sentence unknow before
//***************************
i_Month=comboBox.getSelectedIndex()+1;
switch (i_Month)
{
case 1: i_Days = 31; i_Week = 2; break;
case 2: i_Days = 28; i_Week = 5; break;
case 3: i_Days = 31; i_Week = 5; break;
case 4: i_Days = 30; i_Week = 1; break;
case 5: i_Days = 31; i_Week = 3; break;
case 6: i_Days = 30; i_Week = 6; break;
case 7: i_Days = 31; i_Week = 1; break;
case 8: i_Days = 31; i_Week = 4; break;
case 9: i_Days = 30; i_Week = 0; break;
case 10: i_Days = 31; i_Week = 2; break;
case 11: i_Days = 30; i_Week = 5; break;
case 12: i_Days = 31; i_Week = 0; break;
}
//***************************
//next sentence unknow before
//***************************
j_MyPanel.removeAll();
setCanlendar(i_Days,i_Week);
show(); //necessary!
}
//Main Method
public static void main(String args[])
{
MyCalendar app = new MyCalendar();
//app.addWindowListener(new MyWindowListener());
}
}