| |
package calendar;
import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*;
public class calendarv2 extends applet { private boolean isstandalone = false; //get a parameter value public string getparameter(string key, string def) { return isstandalone ? system.getproperty(key, def) : (getparameter(key) != null ? getparameter(key) : def); } //construct the applet public calendarv2() { } //initialize the applet public void init() { try { jbinit(); } catch(exception e) { e.printstacktrace(); } } //component initialization private void jbinit() throws exception { jlabel1.settext("please enter year"); jlabel1.setbounds(new rectangle(8, 30, 114, 26)); this.setlayout(null); jtextfield1.settext(""); jtextfield1.setbounds(new rectangle(129, 30, 136, 27)); jlabel2.settext("please ente month"); jlabel2.setbounds(new rectangle(4, 70, 104, 26)); jtextfield2.settext(""); jtextfield2.setbounds(new rectangle(130, 69, 136, 26)); jbutton1.setbounds(new rectangle(16, 122, 233, 21)); jbutton1.settext("checkcalendarv2"); jbutton1.addactionlistener(new calendarv2_jbutton1_actionadapter(this)); jbutton2.setbounds(new rectangle(16, 156, 232, 20)); jbutton2.settext("exit"); jbutton2.addactionlistener(new calendarv2_jbutton2_actionadapter(this)); this.add(jbutton1, null); this.add(jtextfield1, null); this.add(jtextfield2, null); this.add(jlabel2, null); this.add(jlabel1, null); this.add(jbutton2, null); }
jlabel jlabel1 = new jlabel(); jtextfield jtextfield1 = new jtextfield(); jlabel jlabel2 = new jlabel(); jtextfield jtextfield2 = new jtextfield(); jbutton jbutton1 = new jbutton();
//get applet information public string getappletinfo() { return "applet information"; } //get parameter info public string[][] getparameterinfo() { return null; } //main method public static void main(string[] args) { calendarv2 applet = new calendarv2(); applet.isstandalone = true; frame frame; frame = new frame(); frame.settitle("applet frame"); frame.add(applet, borderlayout.center); applet.init(); applet.start(); frame.setsize(400,320); dimension d = toolkit.getdefaulttoolkit().getscreensize(); frame.setlocation((d.width - frame.getsize().width) / 2, (d.height - frame.getsize().height) / 2); frame.setvisible(true); } // declare datamember //********************
boolean isleapyear,iseverpressbtn=false; int thisyear,enteryear,entermonth; //*********************************************************************************** //methods //*********************************************************************************** //-----计算该年天数--------------- public int checkyear(int year){ if(year%4==0&&year%100!=0){ thisyear = 366; } if(year%100==0&&year%400==0){ thisyear = 366; } else if(year%4!=0){ thisyear=365; } return thisyear; } //--------------------------------
//------查看是否闰年---------------- public boolean checkleapyear(int year){ if(year%4==0&&year%100!=0){ isleapyear=true; } if(year%400==0) isleapyear=true; else if(year%4!=0){ isleapyear=false; } return isleapyear; } //---------------------------------
//--------计算当月天数--------------- //要输入年份的原因是要判断二月29天还是28天 public int checkmonth(int month ,int year){ int dates=0; if (month <0||month>12){ system.out.println("month error"); } if(month==1||month==3||month==5|| month==7||month==8||month==10|| month==12){ dates=31; } if(month==2&&this.checkleapyear(year)){ dates=29; } if(month==2&&!this.checkleapyear(year)){ dates=28; } if(month==4||month==6||month==9||month==11){ dates=30; } return dates; } //------------------------------------
//-----用递归法计算目标年到已知年的总天数--- public int counteryeardates(int enteryear){ int sum1=0; if(enteryear==2001){//2001年为已知年 sum1=0; //递归从此跳出 } if(enteryear>2001){ sum1+=this.checkyear(enteryear-1) +this.counteryeardates(enteryear-1); } //当目标年大于2001年,则从目标年-1往前累加 //到2001年为止 if(enteryear<2001){ sum1+=this.checkyear(enteryear) +this.counteryeardates(enteryear+1); } //当目标年小于2001年,则从目标年往后累加 //到2001年为止 return sum1; } //-----计算目标年从一月到目标月的总天数------------------------ //要输入年份的原因是要判断二月29天还是28天 public int countermonthdates(int entermonth,int enteryear){ int sum2=0; if(entermonth==1){ sum2=0; } if(entermonth>1&&entermonth<=12){ sum2+=this.checkmonth(entermonth-1,enteryear) +this.countermonthdates(entermonth-1,enteryear); } else if(entermonth<0){ system.out.print("month error"); } return sum2; } //------------------------------------------------
//-------------用数组存目标月日期----------------------------- public int[] array(int alldates,int entermonth){ int n=alldates%7; int a=1; int[] dayintable=new int[38]; if(n<0)//keep the n bigger than 0 n=7+n+1;//line 207 haven′t add 1,so here add if(n!=0) for(int i=n;i<this.checkmonth(entermonth,enteryear)+n;i++){ dayintable[i]=a; a++; } else for(int i=7;i<this.checkmonth(entermonth,enteryear)+7;i++){ //若n为0,则说明目标月一号为星期日 dayintable[i]=a; a++; } return dayintable; } //----------------------------------------------------------
//-----------打印输出------------------------------- public void printtable(int[]dayintable){ system.out.println("curren date is: year " +enteryear+" month "+entermonth); system.out.print("mon tue wed thur fri sat sun "); system.out.println(); for(int i=1;i<=37;i++){ if(dayintable[i]==0) system.out.print(" "); if(i%7==0&&dayintable[i]!=0){ //防止在最后i=35时输出0 system.out.print(dayintable[i]+" "); system.out.println(); } else if(dayintable[i]>9) system.out.print(dayintable[i]+" "); else if(dayintable[i]!=0) //防止在最后i<9时输出0 system.out.print(dayintable[i]+" "); if(i==37) system.out.println(); } } //-----------------------------------------------------
//---------------按钮触发事件--------------------- void jbutton1_actionperformed(actionevent e) { /* ***********refresh datas****************** if(iseverpressbtn){ dates=0;alldates=0;sum1=0;sum2=0;thisyear=0; /*如果这几个变量在方法里声明,则不用刷新,请看calendarv2*/ //} /******left all datas go back to 0****/
int alldates=0; string a,b; a=jtextfield1.gettext(); b=jtextfield2.gettext(); enteryear=integer.parseint(a); entermonth=integer.parseint(b); if(enteryear>=2001){ alldates=this.counteryeardates(enteryear) +this.countermonthdates(entermonth,enteryear)+1; } else if(enteryear>0){ alldates=-this.counteryeardates(enteryear) +this.countermonthdates(entermonth,enteryear); } else system.out.print("year error"); printtable(array(alldates,entermonth)); iseverpressbtn=true; } jbutton jbutton2 = new jbutton();
void jbutton2_actionperformed(actionevent e) { system.exit(1); } //-------------------------------------------------------- //*********************************************************************************** //methods //***********************************************************************************
}
class calendarv2_jbutton1_actionadapter implements java.awt.event.actionlistener { calendarv2 adaptee;
calendarv2_jbutton1_actionadapter(calendarv2 adaptee) { this.adaptee = adaptee; } public void actionperformed(actionevent e) { adaptee.jbutton1_actionperformed(e); } }
class calendarv2_jbutton2_actionadapter implements java.awt.event.actionlistener { calendarv2 adaptee;
calendarv2_jbutton2_actionadapter(calendarv2 adaptee) { this.adaptee = adaptee; } public void actionperformed(actionevent e) { adaptee.jbutton2_actionperformed(e); } }
|
|