Java加急

万年历代码:

/**

* @(#)AidyCalender.java

*

*

* @作者

* @版本1.00 2008/7/19

*/

导入Java . awt . *;

导入Java . awt . event . *;

导入Java . lang . string buffer;

导入javax . swing . *;

导入Java . util . *;

导入javax . swing . timer;

导入javax . swing . border . *;

公共类AidyCalender扩展JFrame实现ActionListener,ItemListener{

Date Date = new Date();

private Gregorian calendar Gregorian calendar = new Gregorian calendar();

//定义中英文字符数组存储星期信息进行转换显示。

private String[]String weeken = new String[]{ " SUN "," MON "," TUE "," WED ",

“THU”、“星期五”、“星期六”};

private string[]string weekcn = new string[]{ "星期日","星期一","星期二","星期三",

“周四”、“周五”、“周六”;

//定义存储月份的信息数组,用于转换显示。

private String[]String monthen = new String[]{ " Jan "," Feb "," Mar "," Apr ",

“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};

Private String[] stringMonthCn = { "一月","二月","三月","四月","五月","六月",

七月、八月、九月、十月、十一月和十二月;

private String[]sysNowTime = new String[6];//sysNowTime是用于存储系统时间的变量。

private String[]sys runtime = new String[6];

private JLabel[]label week = new JLabel[7];

private JLabel[]label day = new JLabel[42];

private JLabel label time = new JLabel();

私有JPanel panel 1 = new JPanel();

private JPanel panel 2 = new JPanel();

private JPanel panel 3 = new JPanel();

private JComboBox combo 1 = new JComboBox();

private JComboBox combo 2 = new JComboBox();

private JButton button today = new JButton();

private Border Border = Border factory . createraisedbevelborder();

私有边框Border 1 = Border factory . create line Border(color . cyan,3);

公共AidyCalender(字符串标题){

超级(标题);

for(int y = 1900;y & lt2101;y++) {

Combo1。additem("+新整数(y)。tostring()+" Year ");

}

for(int m = 0;m & lt12;m++){

combo 2 . additem("+stringMonthCn[m]);

}

button today . settext(" today ");

set layout(new flow layout());

add(panel 1);

添加(panel 2);

添加(panel 3);

panel1.setLayout(新GridLayout(1,3,10,0));

panel 1 . add(combo 1);

combo 1 . additem listener(this);

panel 1 . add(combo 2);

combo 2 . additem listener(this);

panel 1 . add(button today);

button today . addactionlistener(this);

LabelTime.setFont(新字体("ì",字体。平原,16));

labelTime.setForeground(Color。洋红色);

panel 1 . add(label time);

Timer time = new Timer(1000,new Timer listener());

time.addActionListener(新timer listener());

//time . set repeats(true);

time . start();

//label time . addancestorlistener(new timer listener());

panel 2 . set layout(new GridLayout(7,7,0,10));

panel 2 . set background(color . white);

for(int I = 0;我& lt7;i++){

label week[I]= new JLabel();

labelWeek[i]。sethorizontal alignment(0);

if(i==0||i==6){

labelWeek[i]。set background(color . blue);

labelWeek[i]。setForeground(颜色。红色);

LabelWeek[i]。setFont(新字体(“粗体”,字体。粗体,14));

}

否则{

labelWeek[i]。setForeground(颜色。黑色);

LabelWeek[i]。setFont(新字体(“新歌体”,字体。平原,14));

}

labelWeek[i]。setText(string weekcn[I]);

panel 2 . add(label week[I]);

}

for(int I = 0;我& lt42;i++){

label day[I]= new JLabel();

标签日[i]。sethorizontal alignment(0);

标签日[i]。setText(" ");

panel 2 . add(label day[I]);

}

addWindowListener(new window adapter(){

public void window closing(window event e){

system . exit(0);

}

});

setSize(300,300);

setBounds(250,200,400,360);

set visible(true);

setResizable(false);

setDefaultCloseOperation(JFrame。EXIT _ ON _ CLOSE);

get sysdate();

setNowDate();

}

public void action performed(action event AE){

if(AE . getsource()= = button today){

setNowDate();

}

}

public void itemStateChanged(item event aa){

setChangeDate();

}

public int turnWeek(字符串周){

int I;

for(I = 0;我& lt7;i++)

if(week . equalsignorecase(string weeken[I]))

打破;

返回I;

}

public int turn month(String month){

/**

*int turnMonth(字符串月)

*@month系统日期中的月份,如Jan\Feb

*@return int

*返回一个整数值,用于在stringMonthCn[]数组中查找对应的中国月份。

*/

int I;

for(I = 0;我& lt12;i++)

if(month . equalsignorecase(string monthen[I]))

打破;

返回I;

}

/**

*设置日期()

*设置当前系统日期

*/

public void setNowDate(){

setSysDate(getnoweyear()、getnowmount());

getSysRunDate();

setdate null();

combo 1 . setselectedindex(getShowYear()-1900);

combo 2 . setselectedindex(getShowMonth());

setDays(getMonthDays(getnowhear()、getNowMonth())、getInitWeek(sysRunTime[0])、getNowDay());

//label time . settext(sysNowTime[3]);

//label time . sethorizontal alignment(0);

}

/* *整数getShowYear()

*获取应该在组合框中显示的年份。

*/

public void setSysDate(int year,int month){

gregorianCalendar.set(年,月,1);

}

public void setDateNull(){

for(int I = 0;我& lt42;i++){

标签日[i]。setText(" ");

}

}

public void setChangeDate(){

setSysDate(getComboYear()、getComboMonth());

getSysRunDate();

setdate null();

setDays(getMonthDays(getComboYear()、getComboMonth())、getInitWeek(sysRunTime[0]),-1);

}

public int getMonthDays(int year,int month) {

/**

*返回所选年份和月份的天数。因为数组中的值从0开始,3\5\8\10分别代表4\6\9\11个月。

* 1代表二月。判断是不是闰年后,选择回到28或29日。

*其余月份为大月份,返回31天。

**/

开关(月){

案例三:

案例5:

案例8:

案例10:

返回30;//流产返回30天

案例1:

if(Gregorian calendar . isleapyear(year)){

//isLeapYear(year)确定当前纪元中的指定年份是否为闰年。

返回29;

}否则{

返回28;

}//二月返回闰年29天,平年28天。

默认值:

返回31;

//大岳返回31天。

}

}

/**

*int getComboYear()

*在组合框中获取年份

*/

public void getSysDate(){

date = Gregorian calendar . gettime();

sysNowTime = (date.toString())。拆分(" ");

}

public void getSysRunDate(){

date = Gregorian calendar . gettime();

sysRunTime = (date.toString())。拆分(" ");

}

public int getComboYear(){

return combo 1 . getselectedindex()+1900;

}

/**

* int getComboMonth()

*获取月份组合框中的整数值,

*/

public int getComboMonth(){

返回combo 2 . getselectedindex();

}

public int getInitWeek(String init week){

/**

*getWeekNow(字符串initWeek)

* @ para now week week week in system date

*月中哪一天开始回到数字1?

*/

int now week = 0;

for(int I = 0;我& lt7;i++){

if(init week . equalsignorecase(string weeken[I]){

now week = I;

打破;

}

}

下周立即返回;

}

public int getnoweyear(){

返回integer . parse int(sysNowTime[5]);

}

public int getNowMonth(){

int now month = 0;

for(int I = 0;我& lt12;i++){

if(sysNowTime[1]。equalsIgnoreCase(string monthen[I]);

now month = I;

打破;

}

立即返回每月;

}

public int getNowDay(){

返回integer . parse int(sysNowTime[2]);

}

公共整数getShowYear(){

返回integer . parse int(sysNowTime[5]);

}

公共整数getShowMonth(){

/**

*整数getShowMonth()

*获取分组框中显示的中文格式的月份:如七月\八月等。

*/

return turn month(sysNowTime[1]);

}

public void setDays(int monthDays,int initWeek,int day){

/**

*void setDays(int monthDays,int initWeek,int day)

*@para monthDays本月天数

*@para initWeek第一周

* @今天帕拉日

*设置月历

*/

setdate null();

for(int I = init week;我& ltinit week+month days+1;i++){

if((i-initWeek+1)==day){

标签日[i]。set border(border 1);

标签日[i]。setForeground(颜色。蓝色);

标签日[i]。setFont(新字体(“粗体”,字体。粗体,20));

}else if((i%7==0)||(i%7==6))

标签日[i]。setForeground(颜色。红色);

否则{

标签日[i]。setForeground(颜色。黑色);

}

标签日[i]。setText(string . value of(I-init week+1));

}

for(int I = init week+month days;我& lt42;i++)

标签日[i]。setText(" ");

}

类TimerListener实现ActionListener{

//adapter demovar = new adapter demo("万年历程序-Aidy ");

public void action performed(action event e){

Gregorian calendar g = new Gregorian calendar();

String clock = new String((g . gettime()。toString()。split(" ")[3]);

labelTime.setText(时钟);

}

}

公共静态void main(String args[])

{

尝试{

ui manager . setlookandfeel(ui manager . getsystemlookandfeelclassname());

}catch(异常e){

抛出新的runtime exception(e);

}

Aidy日历var =新Aidy日历(“万年历程序-Aidy”);

}

}

记事本代码不能粘贴在这里。你百度HI我,我给你。