网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  小小日历(calendar)     
  文章作者:未知  文章来源:水木森林  
  查看:117次  录入:管理员--2007-11-17  
 
  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);
}
}
 
 
上一篇: 小小计算器    下一篇: 小议如何在applet 中显示图象
  相关文档
dom属性用法速查手册 11-16
在中文windows95环境下用java设计汉字动画 11-17
castor jdo: 一个欺诈的广告 11-17
hibernate o/r映射三大基本定则 11-17
java对word、excel、pdf等操作综合文章 11-17
关于java socket的问题 11-17
用choiceformat将数字与字符串联系起来 11-17
jbuilder 9.0 打造“完美”ftp 11-16
使用java操作文本文件 11-17
面向 java 开发人员的 ajax: 探索 google web toolkit 11-17
编程技术分享:hibernate开发心得 11-17
在java中动态执行类的静态方法 11-17
java核心代码例程之:serversocketdemo.java 11-17
如何使用preparedstatement减少开发时间 11-16
深入浅析jsp安全编程实例 11-17
ibm发布aus: 消除java程序脆弱的api 11-17
checkstyle及其配置的详细解释 11-17
谈谈java语言的接口与类型安全 11-17
java 词汇表速查手册(附:j2ee相关名次解释) 11-17
struts学习起?i问答 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息