日历

这不就跟日历本上一样了吗,不过它比日历本好在,有预设好的链接可以提醒您到时去某个站点,或行某个javascript函数,这样不又起了一个记事本的作用了吗?当然了,你也可以自己添加一些功能,使它变得更加强大,比如添加一个表单,可以让用户填写日记发送到您的系统的数据库中等等。为了完成这个目的,先让我们来看一看JavaBean程序是如何书写的。  
   
  JavaBean程序分析    
   
  我想把HtmlCalendarNotePad中的主要方法介绍一些,相信会大家有所帮助  
   
  public   void   setYear(int   year)   //设置年份   。默认值为当前的年份    
  public   int   getYear()   //获得年份   。默认值为当前的年份    
  //这是标准Java程序写法,因为Java程序就是一个类所以经常写这种setXXX/getXXX  
  public   void   setMonth(int   month)   //设置月份(1-12),默认值为当前的月    
  public   int   getMonth()   //获得月份(1-12),默认值为当前的月    
  public   void   setStyle(int   style)  
  public   int   getStyle()    
  //设置/获得日历的样式(style)  
  //是以星期天为一星期的第一天HtmlCalendarNotePad.SUNDAY_FIRST还是以星期一为一星期的第一天   HtmlCalendarNotePad.MONDAY_FIRST    
   
  //   默认值为HtmlCalendarNotePad.SUNDAY_FIRST    
  public   void   setLocale(Locale   loc)   //设置地区代码(Locale),   默认值为Locale.PRC  
  public   Locale   getLocale()   //获得地区代码(Locale),   默认值为Locale.PRC  
   
  public   void   setAction(int   day,   String   actionUrl   ,String   target_frame)    
  //设置超链接,来处理请求。如果出了任何错误的话,该方法会返回一个空的字符串。    
  //   你可以设置一个普通的URL,如“http://www.yesky.com/action.jsp”  
  //   或者一个一个javascript   函数名,   如   “myFunction”  
  //   日期将被作为一个参数传给URL,或者作为一个字符串值传给   javascript.   格式是yyyymmdd.    
  //   target_frame可以为空的字符串。    
  如:    
  如果调用setAction(21,"http://www.yesky.com/","_blank")    
  超链接为:   〈a   href="http://www.yesky.com/?date=20000621"   target=_blank〉21〈/a〉    
   
  public   void   setActions(String   actionUrl,   String   target_frame)    
  //你也可以为一个月的每一天设置超链接  
   
  ★★现在让我和大家一起来分享那颗诱人的豆子(Bean)吧:(HtmlCalendarNotePad.java)。  
  import   java.text.DateFormat;    
  import   java.text.SimpleDateFormat;    
  import   java.util.*;    
   
  public   class   HtmlCalendarNotePad    
  {    
  public   static   final   int   MONDAY_FIRST   =   1;   //设置每星期是以星期一为第一天    
  public   static   final   int   SUNDAY_FIRST   =   2;   //设置每星期是以星期日为第一天    
  private   Hashtable   config;    
  private   static   final   String   Mnth[]   =   {    
   
  "一月",   "二月",   "三月",   "四月",   "五月",   "六月",    
  "七月",   "八月",   "九月",   "十月",   "十一月",   "十二月"    
  };    
   
  private   int   year;    
  private   int   month;    
  private   int   style;    
  private   String   sFont;    
  private   Locale   loc;    
  private   static   String   NEWLINE   =   "/n";    
   
  public   HtmlCalendarNotePad   ()   //构造函数    
   
  {    
   
  sFont   =   null;    
   
  GregorianCalendar   gCalendar   =   new   GregorianCalendar();   //取得当前的日历(格里高里历)    
   
  config   =   new   Hashtable();   //创建新的哈希表储存配置信息    
   
  NEWLINE   =   System.getProperty("line.separator");    
   
  style   =   2;   //设置每星期是以星期日为第一天    
  month   =   gCalendar.get(2);   //取得月份    
   
  year   =   gCalendar.get(1);   //取的年份    
   
  loc   =   Locale.PRC;   //设置国家名,默认为中华人民共和国    
   
  }    
   
  private   String   formatObject(String   s,   Object   obj)    
   
  {    
   
  String   s1   =   "";    
   
  if(obj   !=   null)    
   
  s1   =   String.valueOf(String.valueOf(obj));    
   
  if(s   ==   null)    
   
  return   s1;    
   
  else    
   
  return   s   +   s1   +   "〈/font〉";    
   
  }    
   
  private   int   getDay(Calendar   calendar)   //取得某日在日历中的位置    
   
  {    
   
  if(style   ==   2)    
   
  return   calendar.get(7)   -   1;    
   
  else    
   
  return   (calendar.get(7)   +   5)   %   7;    
   
  }    
   
  public   String   getHtml()    
   
  {    
   
  GregorianCalendar   gCalendar   =   new   GregorianCalendar(year,   month   -   1,   1);    
   
  GregorianCalendar   gCalendar1   =   new   GregorianCalendar(2001,   3,   24);    
   
  SimpleDateFormat   simpledateformat   =   new   SimpleDateFormat("EEE",   loc);    
   
  //设置缩写格式,EEE是星期的缩写,如   Sun,   若EEEE则为Sunday。    
   
  int   i   =   month   -   1;    
   
  int   j   =   0;    
   
  StringBuffer   stringbuffer   =   new   StringBuffer("");   //创建新的字符串缓冲区    
   
  stringbuffer.append("〈table〉〈tr〉/n");   //在stringbuffer上添加〈table〉〈tr〉,为创建表格作准备    
   
  if(style   ==   2)   //见上解释    
   
  {    
   
  stringbuffer.append("〈th   align=right〉"   +   formatObject(sFont,   simpledateformat.format(gCalendar1.getTime()))   +   "〈/th〉/n");    
   
  gCalendar1.add(5,   1);    
   
  for(int   k   =   1;   k   〈   7;   k++)    
   
  {    
   
  stringbuffer.append("〈th   align=right〉"   +   formatObject(sFont,   simpledateformat.format(gCalendar1.getTime()))   +   "〈/th〉/n");    
   
  gCalendar1.add(5,   1);    
   
  }    
   
  }    
   
  else    
   
  {    
   
  gCalendar1.add(5,   1);    
   
  stringbuffer.append("〈th   align=right〉"   +   formatObject(sFont,   simpledateformat.format(gCalendar1.getTime()))   +   "〈/th〉/n");    
   
  for(int   l   =   2;   l   〈   8;   l++)    
   
  {    
   
  gCalendar1.add(5,   1);    
   
  stringbuffer.append("〈th   align=right〉"   +   formatObject(sFont,   simpledateformat.format(gCalendar1.getTime()))   +   "〈/th〉/n");    
   
  }    
   
  }    
   
  stringbuffer.append("〈/tr〉/n");    
   
  int   i1   =   0;    
   
  j   =   0;    
   
  if(getDay(gCalendar)   〉   0)    
   
  {    
   
  stringbuffer.append("〈tr〉");    
   
  for(;   i1   〈   getDay(gCalendar);   i1++)    
   
  {    
   
  stringbuffer.append("〈td   align=right〉");    
   
  if(sFont   !=   null)    
   
  stringbuffer.append(sFont   +   "   〈/font〉");    
   
  else    
   
  stringbuffer.append("   ");    
   
  stringbuffer.append("〈/td〉/n");    
   
  j++;    
   
  }    
   
  }    
for(;   gCalendar.get(2)   ==   i;   gCalendar.add(5,   1))    
   
  {    
   
  int   j1   =   gCalendar.get(5);    
   
  int   k1   =   (i1   +   j1)   %   7;    
   
  if(k1   ==   1)    
   
  {    
   
  stringbuffer.append("〈tr〉"   +   NEWLINE);    
   
  j   =   0;    
   
  }    
   
  stringbuffer.append("〈td   align=right〉");    
   
  j++;    
   
  if(sFont   !=   null)    
   
  stringbuffer.append(sFont);    
   
  String   s;    
   
  if((s   =   (String)config.get(String.valueOf(j1)))   !=   null)    
   
  {    
   
  stringbuffer.append("〈a   href=/"");    
   
  if(s.toUpperCase().startsWith("HTT")   ||   s.indexOf(".")   〉   0)    
   
  {    
   
  stringbuffer.append(s);    
   
  if(s.indexOf("?")   〈   0)    
   
  stringbuffer.append("?date="   +   stringDate(gCalendar));    
   
  else    
   
  stringbuffer.append("&date="   +   stringDate(gCalendar));    
   
  }    
   
  else    
   
  {    
   
  stringbuffer.append("javascript:"   +   s   +   "('"   +   stringDate(gCalendar)   +   "');");    
   
  }    
   
  stringbuffer.append("/"");    
   
  if((s   =   (String)config.get(j1   +   "target"))   !=   null)    
   
  stringbuffer.append("   target=/""   +   s   +   "/"");    
   
  stringbuffer.append("〉");    
   
  stringbuffer.append(gCalendar.get(5));    
   
  stringbuffer.append("〈/a〉/n");    
   
  }    
   
  else    
   
  {    
   
  stringbuffer.append(String.valueOf(j1));    
   
  }    
   
  if(sFont   !=   null)    
   
  stringbuffer.append("〈/font〉");    
   
  stringbuffer.append("〈/td〉/n");    
   
  if(k1   ==   0)    
   
  stringbuffer.append("〈/tr〉/n");    
   
  }    
   
  if(j   〈   7)    
   
  {    
   
  for(;   j   〈   7;   j++)    
   
  {    
   
  stringbuffer.append("〈td   align=right〉");    
   
  if(sFont   !=   null)    
   
  stringbuffer.append(sFont);    
   
  stringbuffer.append("   ");    
   
  if(sFont   !=   null)    
   
  stringbuffer.append("〈/font〉");    
   
  stringbuffer.append("〈/td〉/n");    
   
  }    
   
  stringbuffer.append("〈/tr〉/n");    
   
  }    
   
  stringbuffer.append("〈/table〉/n");    
   
  return   stringbuffer.toString();    
   
  }    
   
  public   Locale   getLocale()   //获取地区名    
   
  {    
   
  return   loc;    
   
  }    
   
  public   int   getYear()   //取得年份    
   
  {    
   
  return   htmlCalendarYear;    
   
  }    
   
  public   int   getMonth()   //取得月分    
   
  {    
   
  return   htmlCalendarMonth;    
   
  }    
   
  public   int   getStyle()   //取得日历的样式    
   
  {    
   
  return   htmlCalendarStyle;    
   
  }    
   
  //设置动作的URI,target_frame   的值可以为_blank、   _parent、   _top、   _self。    
   
  public   void   setAction(int   day,   String   actionUri,   String   target_frame)    
   
  {    
   
  if(actionUri   !=   null)    
   
  {    
   
  config.put(String.valueOf(day),   actionUri);    
   
  if(target_frame   !=   null   &&   target_frame.length()   〉   0)    
   
  config.put(day   +   "target",   target_frame);    
   
  }    
   
  }    
   
  //设置一个月的所有天的超链接    
   
  public   void   setActions(String   actionUri,   String   target_frame)    
   
  {    
   
  for(int   day   =   1;   day   〈=   31;   day++)    
   
  setAction(day,   actionUri,   target_frame);    
   
  }    
   
  //设置地区    
   
  public   void   setLocale(Locale   locale)    
   
  {    
   
  loc   =   locale;    
   
  }    
   
  //设置年份    
   
  public   void   setYear(int   htmlCalendarYear)    
   
  {    
   
  if(htmlCalendarYear   〉   0)    
   
  {    
   
  year   =   htmlCalendarYear;    
   
  config.clear();    
   
  }    
   
  }    
   
  //设置月份    
   
  public   void   setMonth(int   htmlCalendarMonth)    
   
  {    
   
  if(htmlCalendarMonth   〉=   1   &&   htmlCalendarMonth   〈=   12)    
   
  {    
   
  month   =   htmlCalendarMonth;    
   
  config.clear();    
   
  }    
   
  }    
   
  //设置日历的样式    
   
  public   void   setStyle(int   htmlCalendarStyle)    
   
  {    
   
  style   =   htmlCalendarStyle;    
   
  }    
   
  private   String   stringDate(Calendar   calendar)    
   
  {    
   
  String   strDay   =   String.valueOf(calendar.get(1));    
   
  return   strDay   +   twoDigits(calendar.get(2)   +   1)   +   twoDigits(calendar.get(5));    
   
  }    
   
  private   String   twoDigits(int   day)   //为了日历中数字能够对齐,所以1-9   前将加0    
   
  {    
   
  String   stringDay   =   String.valueOf(day);   //取得day的值    
   
  if(stringDay.length()   ==   1)   //如果字符串长度为1    
   
  return   "0"   +   stringDay;   //则在字符串前加零    
   
  else    
   
  return   stringDay;    
   
  }    
   
  } 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值