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);
}
}
闽公网安备 35060202000074号