자바 빈 으로 인터넷 달력 만 들 기(2)

JavaBean 프로그램 분석 저 는 Html CalendarNotePad 의 주요 방법 을 소개 하고 싶 습 니 다.여러분 이 Public void setYear(int year)//설정 년도 에 도움 이 될 것 이 라 고 믿 습 니 다.기본 값 은 현재 년도 Public int getYear()//년도 획득 입 니 다.기본 값 은 현재 년도//이것 은 표준 자바 프로그램 작성 방법 입 니 다.자바 프로그램 이 하나의 클래스 이기 때문에 자주 이 setXXX/getXXxpublic void setMonth(int month)/월(1-12)을 씁 니 다.기본 값 은 현재 월 Public int getMonth()/월(1-12)입 니 다.기본 값 은 현재 월 public void setStyle(int style)public int getStyle()//설정/달력 을 가 져 오 는 스타일(style)//일요일 을 일주일 로 하 는 첫날 HtmlCalendarNotePad.SUNDAYFIRST 는 월요일 을 일주일 로 하 는 첫날 입 니 다.Html Calendar NotePad.MONDAYFIRST//기본 값 은 HtmlCalendarNotePad.SUNDAYFIRST public void set Locale(Locale loc)//지역 코드 설정(Locale),기본 값 은 Locale.PRCpublic Locale getLocale()//지역 코드 획득(Locale),기본 값 은 Locale.PRCpublic void set Action(int day,String actionUrl,String targetframe)//하이퍼링크 를 설정 하여 요청 을 처리 합 니 다.오류 가 발생 하면 빈 문자열 을 되 돌려 줍 니 다./"일반적인 URL 을 설정 할 수 있 습 니 다.예 를 들 어"http://www.yesky.com/action.jsp"//또는 하나의 javascript 함수 이름,예 를 들 어"my Function"//날 짜 는 하나의 매개 변수 로 URL 에 전달 되 거나 문자열 값 으로 javascript 에 전 달 됩 니 다.형식 은 yyymmdd./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)을 공유 하 겠 습 니 다.(Html Calendar NotePad.자바)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 SUNDAYFIRST = 2; //매주 일요일 을 첫날 로 설정 합 니 다.private Hashtable config;private static final String Mnth[]={"1 월","2 월","3 월","4 월","5 월","6 월","7 월","8 월","9 월","10 월","11 월","12 월"};private int year; private int month; private int style; private String sFont; private Locale loc; private static String NEWLINE = ""; 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")를 만 듭 니 다./stringbuffer 에'table','tr'를 추가 하여 표를 만 들 기 위해 if(style==2)//를 참조 하여{stringbuffer.append('th align=right')+formatObject(sFont,simpledateformat.format(gCalendar 1.getTime()))+'/th')를 설명 합 니 다.gCalendar1.add(5, 1); for(int k = 1; k 〈 7; k++) { stringbuffer.append("〈th align=right〉" + formatObject(sFont, simpledateformat.format(gCalendar1.getTime())) + "〈/th〉"); gCalendar1.add(5, 1); } } else { gCalendar1.add(5, 1); stringbuffer.append("〈th align=right〉" + formatObject(sFont, simpledateformat.format(gCalendar1.getTime())) + "〈/th〉"); for(int l = 2; l 〈 8; l++) { gCalendar1.add(5, 1); stringbuffer.append("〈th align=right〉" + formatObject(sFont, simpledateformat.format(gCalendar1.getTime())) + "〈/th〉"); } } stringbuffer.append("〈/tr〉"); 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〉"); 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〉"); } else { stringbuffer.append(String.valueOf(j1)); } if(sFont != null) stringbuffer.append("〈/font〉"); stringbuffer.append("〈/td〉"); if(k1 == 0) stringbuffer.append("〈/tr〉"); } 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〉"); } stringbuffer.append("〈/tr〉"); } stringbuffer.append("〈/table〉"); return stringbuffer.toString(); } public Locale getLocale()/지역 명 가 져 오기{return loc;}public int getYear()//년도 취득{return htmlCalendarYear;}public int getMonth()//월 분 취득{return htmlCalendarMonth;}public int getStyle()/달력 을 가 져 오 는 스타일{return htmlCalendarStyle;}/동작 설정 URI,targetframe 의 값 은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){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 toDigits(int day)//달력 의 숫자 를 맞 출 수 있 도록 1-9 전에 0{String stringDay=String.valueOf(day);/day 의 값 if(stringDay.length()=1)/문자열 길이 가 1 return"0"+stringDay 이면//문자열 앞 에 0 else return stringDay;}을 추가 합 니 다.

좋은 웹페이지 즐겨찾기