亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? calendar.java

?? gwt 開發(fā) 界面控件的封裝
?? JAVA
字號:
/**
 * package com.mc.tables.client;
 */
package com.mc.tables.client;

/**
 * import lib
 */
import java.util.Date;

import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.ChangeListenerCollection;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.SourcesChangeEvents;
import com.google.gwt.user.client.ui.Widget;

/**
 *  class Calendar 
 * @author Administrator
 * 日 歷
 */
public class Calendar extends Composite 
    implements ClickListener, SourcesChangeEvents {

	/**
	 * class NavBar
	 * @author Administrator
	 * 日歷標題 月和年的變化
	 */
  private class NavBar extends Composite implements ClickListener {

    public final DockPanel bar = new DockPanel();
    public final Button prevMonth = new Button("<", this);
    public final Button prevYear = new Button("<<", this);
    public final Button nextYear = new Button(">>", this);
    public final Button nextMonth = new Button(">", this);
    public final HTML title = new HTML();

    private final Calendar calendar;

    public NavBar(Calendar calendar) {
      this.calendar = calendar;

      initWidget(bar);
      bar.setStyleName("navbar");
      title.setStyleName("header");

      HorizontalPanel prevButtons = new HorizontalPanel();
      prevButtons.add(prevMonth);
      prevButtons.add(prevYear);

      HorizontalPanel nextButtons = new HorizontalPanel();
      nextButtons.add(nextYear);
      nextButtons.add(nextMonth);

      bar.add(prevButtons, DockPanel.WEST);
      bar.setCellHorizontalAlignment(prevButtons, DockPanel.ALIGN_LEFT);
      bar.add(nextButtons, DockPanel.EAST);
      bar.setCellHorizontalAlignment(nextButtons, DockPanel.ALIGN_RIGHT);
      bar.add(title, DockPanel.CENTER);
      bar.setVerticalAlignment(DockPanel.ALIGN_MIDDLE);
      bar.setCellHorizontalAlignment(title, HasAlignment.ALIGN_CENTER);
      bar.setCellVerticalAlignment(title, HasAlignment.ALIGN_MIDDLE);
      bar.setCellWidth(title, "100%");
    }

    public void onClick(Widget sender) {
      if (sender == prevMonth) {
        calendar.prevMonth();
      } else if (sender == prevYear) {
        calendar.prevYear();
      } else if (sender == nextYear) {
        calendar.nextYear();
      } else if (sender == nextMonth) {
        calendar.nextMonth();
      }
    }
  }

  /**
   * class YearMonth 
   * @author Administrator
   * 日歷標題 年和月的下來框
   */
  private class YearMonth  extends Composite implements ChangeListener{
	  
	  public final DockPanel bar = new DockPanel();
	  public final ListBox tyear =new ListBox();
	  public final ListBox tmonth = new ListBox();	   
	  private final Calendar calendar;
	  
	  public YearMonth(Calendar cal){
		  this.calendar = cal;

	      initWidget(bar);
	      tyear.addChangeListener(this);
	      tmonth.addChangeListener(this);
	      tmonth.setWidth("100%");
	      tyear.setWidth("100%");
	      addMonth(tmonth);
	      addYear(tyear);
	      bar.setSpacing(2);
	      bar.add(tmonth, DockPanel.WEST);
	      bar.setCellHorizontalAlignment(tmonth, DockPanel.ALIGN_LEFT);
	      bar.setCellWidth(tmonth, "50%");
	      bar.add(tyear, DockPanel.CENTER);
	      bar.setCellHorizontalAlignment(tyear, DockPanel.ALIGN_RIGHT);
	      bar.setCellWidth(tyear, "50%");
	      bar.setStyleName("ymbar");
	  }
	  
	  /**
	   * 初始化月份列框
	   * @param list 下拉框
	   */
	  private void addMonth(ListBox list){
		  list.addItem("一月",0+"");
		  list.addItem("二月",1+"");
		  list.addItem("三月",2+"");
		  list.addItem("四月",3+"");
		  list.addItem("五月",4+"");
		  list.addItem("六月",5+"");
		  list.addItem("七月",6+"");
		  list.addItem("八月",7+"");
		  list.addItem("九月",8+"");
		  list.addItem("十月",9+"");
		  list.addItem("十一月",10+"");
		  list.addItem("十二月",11+"");
	  }
	  
	  /**
	   * 初始化年份列框
	   * @param list 下拉框
	   */
	  private void addYear(ListBox list){
		  for(int i =0 ;i<30;i++){
			  list.addItem(2000+i+"",2000+i+"");
		  }
	  }
	  
	  /**
	   * 設(shè)置年份和月份
	   * @param y 年份
	   * @param m 月份
	   */
	  public void setYearMonth(int y,int m){
		  int yindex = y-1900;
		  int mindex = m;
		  final int showYearCount = 3; 
		  if(yindex>=0 ){
			  if(yindex < showYearCount)
			  {
				  tyear.clear();
				  for(int i =0 ;i<=(yindex+showYearCount);i++){
					  tyear.addItem(1900+i+"",1900+i+"");
				  }
				  tyear.setItemSelected(yindex, true);
				  tmonth.setItemSelected(mindex, true);
			  }else{
				  tyear.clear();
				  for(int i = -showYearCount ;i<=showYearCount;i++){
					  tyear.addItem(y+i+"",y+i+"");
				  }
				  tyear.setItemSelected(showYearCount, true);
				  tmonth.setItemSelected(mindex, true);				   
			  }		 
			
		  }
		  else
		  {
			  tyear.clear();
			  for(int i =0 ;i<showYearCount;i++){
				  tyear.addItem(1900+i+"",1900+i+"");
			  }
			  tyear.setItemSelected(0, true);
			  tmonth.setItemSelected(0, true);
			  calendar.setYearMonth(1900, 0);
		  }
	  }
	  
	  /**
	   * 下拉框值改變的事件
	   */
	  public void onChange(Widget sender) {
		// TODO Auto-generated method stub
		//if(sender == tyear){
			String s = tyear.getValue(tyear.getSelectedIndex());
			String d = tmonth.getValue(tmonth.getSelectedIndex());
			
		    int y =  Integer.parseInt(s);
		    int m = Integer.parseInt(d);
			calendar.setYearMonth(y, m);
		//}
	  }

	    
  }
 
  /**
   * static class CellHTML
   * @author Administrator
   * 特殊的單元格值
   */
  private static class CellHTML extends HTML {
    private int day;
        
    public CellHTML(String text, int day) {
      super(text);
      this.day = day;
    }
        
    public int getDay() {
      return day;
    }
  }
  
  
  private final NavBar navbar = new NavBar(this);
  private final YearMonth ym = new YearMonth(this);  
  private final DockPanel outer = new DockPanel();
  
  /**
   * 表格 6 行,7 列
   */
  private final Grid grid = new Grid(6, 7) {
    public boolean clearCell(int row, int column) {
      boolean retValue = super.clearCell(row, column);
            
      Element td = getCellFormatter().getElement(row, column);
      DOM.setInnerHTML(td, "");
      return retValue;
    }
  };

  private Date date = new Date();
  
  private ChangeListenerCollection changeListeners;
  //星期
  private String[] days = new String[] { "日", "一", "二",
      "三", "四", "五", "六" };
  //月份
  private String[] months = new String[] { "一月", "二月", "三月",
      "四月", "五月", "六月", "七月", "八月", "九月", "十月",
      "十一月", "十二月" };

  public Calendar() {
    initWidget(outer);
    grid.setStyleName("table");
    grid.setCellSpacing(0);
    grid.setCellSpacing(0);
    outer.add(ym, DockPanel.NORTH);
    outer.add(grid, DockPanel.CENTER);
    drawCalendar();
    setStyleName("CalendarWidget");
  }
  /**
   * 帶參數(shù)的構(gòu)造函數(shù)
   * @param date 指定的日期
   */
  public Calendar(Date date){
	 this();
	 this.date = date;
	 drawCalendar();
  }

  /**
   * 設(shè)置日期頭的日期
   * @param y 年
   * @param m 月 
   */
  private void setTitleYM(int y,int m){
	  ym.setYearMonth(y, m);
  }
  
  /**
   * 初始化日歷
   * 繪出日歷
   */
  private void drawCalendar() {
    int year = getYear();
    int month = getMonth();
    int day = getDay();
    setTitleYM(year,month);
    //setHeaderText(year, month);
    grid.getRowFormatter().setStyleName(0, "weekheader");
    for (int i = 0; i < days.length; i++) {
      grid.getCellFormatter().setStyleName(0, i, "days");
      //grid.setText(0, i, days[i].substring(0, 3));
      grid.setText(0, i, days[i]);
    }

    Date now = new Date();
    int sameDay = now.getDate(); 
    int today = (now.getMonth() == month && now.getYear()+1900 == year) ? sameDay : 0;
        
    int firstDay = new Date(year - 1900, month, 1).getDay();
    int numOfDays = getDaysInMonth(year, month);

    int j = 0;
    for (int i = 1; i < 6; i++) {
      for (int k = 0; k < 7; k++, j++) {
        int displayNum = (j - firstDay + 1);
        if (j < firstDay || displayNum > numOfDays) {
          grid.getCellFormatter().setStyleName(i, k, "empty");
          grid.setHTML(i, k, "&nbsp;&nbsp;&nbsp;");
        } else {
          HTML html = new CellHTML(
            "<span>" + String.valueOf(displayNum) + "</span>", 
            displayNum);
          html.addClickListener(this);
          grid.getCellFormatter().setStyleName(i, k, "cell");
          if (displayNum == today) {
            grid.getCellFormatter().addStyleName(i, k, "today");
          } else if (displayNum == day) {
            grid.getCellFormatter().addStyleName(i, k, "day");
          } 
          grid.setWidget(i, k, html);
        }
      }
    }
  }
  
  /**
   * 設(shè)置標題
   * @param year 年
   * @param month 月
   */
  protected void setHeaderText(int year, int month) {
    navbar.title.setText(months[month] + ", " + year);
  }
  
  /**
   * 獲得某一個月的天數(shù)
   * @param year
   * @param month
   * @return
   */
  private int getDaysInMonth(int year, int month) {
    switch (month) {
      case 1:
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
          return 29; // leap year
        else
          return 28;
      case 3:
        return 30;
      case 5:
        return 30;
      case 8:
        return 30;
      case 10:
        return 30;
      default:
        return 31;
    }
  }

  /**
   * 前一個月
   */
  public void prevMonth() {
    int month = getMonth() - 1;
    if (month < 0) {
      setDate(getYear() - 1, 11, getDay());
    } else {
      setMonth(month);
    }
    drawCalendar();
  }

  /**
   * 后一個月
   */
  public void nextMonth() {
    int month = getMonth() + 1;
    if (month > 11) {
      setDate(getYear() + 1, 0, getDay());
    } else {
      setMonth(month);
    }
    drawCalendar();
  }
  
  /**
   * 設(shè)置指定月份 
   * @param y 年
   * @param m 月
   */
  public void setYearMonth(int y,int m){
	  setDate(y, m, 1);
	  drawCalendar();
  }
  
  /**
   * 設(shè)置指定日期
   * @param y 年
   * @param m 月
   * @param d 日
   */
  public void setYearMonth(int y,int m,int d){
	  setDate(y, m, d);
	  drawCalendar();
  }
  
  /**
   * 前一年
   */
  public void prevYear() {
    setYear(getYear() - 1);
    drawCalendar();
  }

  /**
   * 后一年
   */
  public void nextYear() {
    setYear(getYear() + 1);
    drawCalendar();
  }

  /**
   * 設(shè)置指定日期
   * @param year 年
   * @param month 月
   * @param day 日
   */
  private void setDate(int year, int month, int day) {
    date = new Date(year - 1900, month, day);
  }
    
  private void setYear(int year) {
    date.setYear(year - 1900);
  }

  private void setMonth(int month) {
    date.setMonth(month);
  }

  public int getYear() {
    return 1900 + date.getYear();
  }

  public int getMonth() {
    return date.getMonth();
  }

  public int getDay() {
    return date.getDate();
  }
    
  public Date getDate() {
    return date;
  }

  /**
   * 點擊每一天時 觸發(fā)此函數(shù)執(zhí)行
   */
  public void onClick(Widget sender) {
    CellHTML cell = (CellHTML)sender;
    setDate(getYear(), getMonth(), cell.getDay());
    drawCalendar();
    if (changeListeners != null) {
      changeListeners.fireChange(this);
    }
  }

  public void addChangeListener(ChangeListener listener) {
    if (changeListeners == null)
      changeListeners = new ChangeListenerCollection();
    changeListeners.add(listener);
  }

  public void removeChangeListener(ChangeListener listener) {
    if (changeListeners != null)
      changeListeners.remove(listener);
  }
}  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费在线| 亚洲午夜免费电影| 国产精品一区二区黑丝| 久久午夜电影网| 国产麻豆成人精品| 国产日韩欧美精品一区| 99视频一区二区| 亚洲综合久久av| 91精品国产色综合久久不卡蜜臀 | 欧美日韩一区小说| 日韩国产精品久久久久久亚洲| 欧美一级夜夜爽| 国产一区二区三区黄视频 | 精品卡一卡二卡三卡四在线| 捆绑调教美女网站视频一区| 久久色在线观看| 99久久99久久精品免费观看| 一级中文字幕一区二区| 欧美一区二区免费视频| 国产成人免费av在线| 亚洲人123区| 欧美一区二区视频在线观看2022| 国模无码大尺度一区二区三区| 国产精品成人在线观看| 在线播放一区二区三区| 国产精品亚洲成人| 一卡二卡三卡日韩欧美| 日韩一级高清毛片| 91麻豆精品视频| 免费观看成人av| 亚洲天堂网中文字| 日韩一区二区视频| 不卡的av网站| 蜜臀av一区二区| 1024精品合集| 欧美tk—视频vk| 在线观看欧美日本| 国产又黄又大久久| 一区二区三区四区激情| 欧美精品tushy高清| 国产98色在线|日韩| 欧美电影免费提供在线观看| gogo大胆日本视频一区| 奇米色777欧美一区二区| 中文字幕一区二区三区四区不卡| 91麻豆精品国产91| 99久久99久久久精品齐齐 | 136国产福利精品导航| 久久精品欧美日韩精品| 日韩高清在线不卡| 国产成人av电影在线| 精品国产91乱码一区二区三区| 国产在线观看免费一区| 亚洲成人动漫一区| 国产白丝精品91爽爽久久| 久久精品一区二区三区不卡| 天堂在线亚洲视频| 日韩欧美专区在线| 美女在线一区二区| 日韩欧美一区二区三区在线| 亚洲国产精品精华液网站| 粉嫩绯色av一区二区在线观看| 久久精品欧美一区二区三区麻豆| 欧美吞精做爰啪啪高潮| 激情综合色播五月| 欧美大片在线观看| 国产成人精品亚洲日本在线桃色| 欧美一区二区在线观看| 久久国内精品自在自线400部| 中文字幕高清不卡| 91麻豆国产香蕉久久精品| 国内精品在线播放| 天天综合网天天综合色| 久久国产日韩欧美精品| 亚洲素人一区二区| 麻豆成人久久精品二区三区小说| 91丨九色丨黑人外教| 精品国产一二三| 五月天国产精品| 欧美艳星brazzers| 国产精品美女一区二区| 国产精品一区专区| 日韩无一区二区| 91精品免费在线观看| 色综合久久中文综合久久97| www.日韩在线| 成人a区在线观看| 91丨porny丨国产| 欧美性大战久久久| 在线观看91精品国产麻豆| 欧美成人精精品一区二区频| 精品久久一区二区三区| 久久综合资源网| 久久精品视频在线免费观看| 亚洲一区二区三区四区五区黄 | 久久国产麻豆精品| 中文字幕一区二区三区在线观看 | 91.com在线观看| 国产视频一区二区在线观看| 日韩精品福利网| 国产精品自拍三区| 久久久久久一级片| a级精品国产片在线观看| 国产亚洲欧美日韩日本| 久久99热这里只有精品| 久久综合九色综合欧美就去吻| 久久精品99国产精品| 久久精品人人做人人爽97| 亚洲精品日产精品乱码不卡| 激情综合色综合久久| 欧美日韩国产大片| 国产日产欧美一区| 五月婷婷激情综合| 欧美欧美午夜aⅴ在线观看| 亚洲人精品午夜| 久久99热这里只有精品| 日本高清不卡aⅴ免费网站| 国产成人亚洲精品狼色在线 | 91精品国产91久久久久久最新毛片| 日韩一级在线观看| 国产日产精品1区| 亚洲国产一区视频| 韩国精品在线观看| 97久久精品人人做人人爽| 911国产精品| 亚洲欧美综合另类在线卡通| 天天色天天爱天天射综合| 成人中文字幕电影| 欧美一卡在线观看| 亚洲三级电影全部在线观看高清| 麻豆成人在线观看| 在线观看免费亚洲| 国产精品欧美经典| 蜜臂av日日欢夜夜爽一区| 成人国产精品视频| 精品免费国产二区三区| 亚洲一区二区中文在线| 国产成人无遮挡在线视频| 欧美日韩不卡一区| 亚洲人成电影网站色mp4| 国产一区二区女| 欧美二区三区91| 一区二区三区精品久久久| 国产成人亚洲综合a∨婷婷图片| 4438x亚洲最大成人网| 亚洲女爱视频在线| 风流少妇一区二区| 26uuu久久天堂性欧美| 日韩国产欧美在线观看| 91黄色免费看| 最新国产成人在线观看| 国产精品亚洲专一区二区三区| 日韩一区二区精品| 午夜精品久久久久久久久久| 91视频www| 亚洲欧洲精品成人久久奇米网| 国产一区二区三区香蕉| 日韩美女天天操| 日韩专区中文字幕一区二区| 欧美综合欧美视频| 亚洲免费观看高清| 色综合久久中文字幕| 亚洲欧美视频在线观看| 99久久久国产精品| 自拍偷在线精品自拍偷无码专区 | 天天av天天翘天天综合网| 91美女福利视频| 亚洲精品免费在线| 99久久免费精品| 亚洲欧美激情一区二区| 日本精品视频一区二区三区| 亚洲免费观看高清完整| 色域天天综合网| 亚洲一区二区三区不卡国产欧美| 色伊人久久综合中文字幕| 亚洲精品网站在线观看| 91福利精品视频| 午夜不卡在线视频| 日韩精品一区在线| 国产又黄又大久久| 欧美国产日本视频| 91麻豆国产精品久久| 亚洲一二三四区不卡| 欧美熟乱第一页| 日韩av中文字幕一区二区| 日韩一区二区三区三四区视频在线观看 | 日韩电影免费在线看| 日韩欧美黄色影院| 国产一级精品在线| 国产精品国产三级国产普通话蜜臀| 成人av在线看| 亚洲一级二级三级| 欧美成人一区二区三区片免费| 国产一本一道久久香蕉| 亚洲特黄一级片| 91精品久久久久久久久99蜜臂| 国产美女精品一区二区三区| 中文字幕日本乱码精品影院| 欧美三级日韩三级| 国产一区啦啦啦在线观看|