熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

簡單的日歷表寫法

2022-06-13   來源: Java核心技術 

  import javautilArrayList;

  import javautilCalendar;

  import javautilList;

  public class Test {

  public static void main(String[] args) {

  List<Integer> links = new ArrayList<Integer>();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  // 采用當月的方式進行構造現在是

  Nil nil = new Nil(links);

  Systemoutprintln(niltoString());

  }

  }

  class Nil {

  /**

  * 生成日歷的 Calendar

  */

  private Calendar calendar;

  /**

  * 有鏈接的日期

  */

  private List<Integer> links;

  private static String TABLE_START = <table width=\\ border=\\>\n;

  private static String TABLE_END = <table>\n;

  private static String TR_START =   <tr>\n;

  private static String TR_END =   </tr>\n;

  private static String TD_START =     <td>;

  private static String TD_END = </td>\n;

  private static String TD_BLANK = TD_START + + TD_END;

  /**

  * 鏈接字符串的常量需要將 {} 替換成指定字符串

  */

  private static String LINK = <a href=\link{}\>{}</a>;

  /**

  * 構造當月的日歷

  * @param links         需要帶有鏈接的日期

  */

  public Nil(List<Integer> links) {

  this(CalendargetInstance() links);

  }

  /**

  * 構造指定日期月份的日歷

  * @param calendar      指定日期

  * @param links         需要帶有鏈接的日期

  */

  public Nil(Calendar calendar List<Integer> links) {

  calendarset(CalendarDATE );

  thiscalendar = calendar;

  thislinks = links;

  }

  public String toString() {

  StringBuffer sb = new StringBuffer();

  sbappend(TABLE_START);

  sbappend(TR_START);

  int total = ;

  // 若非周日時在添加空的 <td> 串以空開 號顯示在指定的位置上

  for(int k = calendarget(CalendarDAY_OF_WEEK); total < k; total++) {

  appendBlank(sb);

  }

  for(int i = k = calendargetActualMaximum(CalendarDATE); i <= k; i++) {

  if((total ) % == ) {

  sbappend(TR_END)append(TR_START);

  }

  appendDate(sb i);

  total++;

  }

  // 最後的日期如果不是周六則在後面添加上若干個 <td> 串以填滿表格

  while((total ) % != ) {

  appendBlank(sb);

  total++;

  }

  sbappend(TR_START);

  sbappend(TABLE_END);

  return sbtoString();

  }

  private void appendBlank(StringBuffer sb) {

  sbappend(TD_BLANK);

  }

  private void appendDate(StringBuffer sb int date) {

  sbappend(TD_START);

  if(ntains(date)) {

  sbappend(LINKreplace({} StringvalueOf(date)));

  } else {

  sbappend(date);

  }

  sbappend(TD_END);

  }

  }

  import javautilArrayList;

  import javautilCalendar;

  import javautilList;

  public class Test {

  public static void main(String[] args) {

  List<Integer> links = new ArrayList<Integer>();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  linksadd();

  // 采用當月的方式進行構造現在是

  Nil nil = new Nil(links);

  Systemoutprintln(niltoString());

  }

  }

  class Nil {

  /**

  * 生成日歷的 Calendar

  */

  private Calendar calendar;

  /**

  * 有鏈接的日期

  */

  private List<Integer> links;

  private static String TABLE_START = <table width=\\ border=\\>\n;

  private static String TABLE_END = <table>\n;

  private static String TR_START =   <tr>\n;

  private static String TR_END =   </tr>\n;

  private static String TD_START =     <td>;

  private static String TD_END = </td>\n;

  private static String TD_BLANK = TD_START + + TD_END;

  /**

  * 鏈接字符串的常量需要將 {} 替換成指定字符串

  */

  private static String LINK = <a href=\link{}\>{}</a>;

  /**

  * 構造當月的日歷

  * @param links         需要帶有鏈接的日期

  */

  public Nil(List<Integer> links) {

  this(CalendargetInstance() links);

  }

  /**

  * 構造指定日期月份的日歷

  * @param calendar      指定日期

  * @param links         需要帶有鏈接的日期

  */

  public Nil(Calendar calendar List<Integer> links) {

  calendarset(CalendarDATE );

  thiscalendar = calendar;

  thislinks = links;

  }

  public String toString() {

  StringBuffer sb = new StringBuffer();

  sbappend(TABLE_START);

  sbappend(TR_START);

  int total = ;

  // 若非周日時在添加空的 <td> 串以空開 號顯示在指定的位置上

  for(int k = calendarget(CalendarDAY_OF_WEEK); total < k; total++) {

  appendBlank(sb);

  }

  for(int i = k = calendargetActualMaximum(CalendarDATE); i <= k; i++) {

  if((total ) % == ) {

  sbappend(TR_END)append(TR_START);

  }

  appendDate(sb i);

  total++;

  }

  // 最後的日期如果不是周六則在後面添加上若干個 <td> 串以填滿表格

  while((total ) % != ) {

  appendBlank(sb);

  total++;

  }

  sbappend(TR_START);

  sbappend(TABLE_END);

  return sbtoString();

  }

  private void appendBlank(StringBuffer sb) {

  sbappend(TD_BLANK);

  }

  private void appendDate(StringBuffer sb int date) {

  sbappend(TD_START);

  if(ntains(date)) {

  sbappend(LINKreplace({} StringvalueOf(date)));

  } else {

  sbappend(date);

  }

  sbappend(TD_END);

  }

  }

  運行結果為

    <table width= border=>

  <tr>

  <td> </td>

  <td> </td>

  <td></td>

  <td></td>

  <td><a ></a></td>

  <td></td>

  <td></td>

  </tr>

  <tr>

  <td><a ></a></td>

  <td></td>

  <td></td>

  <td><a ></a></td>

  <td></td>

  <td></td>

  <td><a ></a></td>

  </tr>

  <tr>

  <td></td>

  <td></td>

  <td><a ></a></td>

  <td></td>

  <td></td>

  <td><a ></a></td>

  <td></td>

  </tr>

  <tr>

  <td></td>

  <td><a ></a></td>

  <td></td>

  <td></td>

  <td><a ></a></td>

  <td></td>

  <td></td>

  </tr>

  <tr>

  <td><a ></a></td>

  <td></td>

  <td></td>

  <td><a ></a></td>

  <td></td>

  <td> </td>

  <td> </td>

  <tr>

  <table>


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26120.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.