部落客廣告聯播

2007年8月22日 星期三

實用Java文件資源:Sun 官方提供Java Tutorials

學Java可以不用買書(代價是你要看的懂英文)
Sun官方提供
Java Tutorial:http://java.sun.com/docs/books/tutorial
書目章節大綱: Really Big Index
也可下載離線版本慢慢看:download page

更多Java 相關的Tutorial可在 Tutorials and Online Training找到喔...

一起練功吧.....

2007年8月13日 星期一

DateFormatSymbols

假設一個情形:你想自己寫一個JSP月曆表、或者是GUI月曆控制項,第一步當然是先產生月曆。
然而第一個遇到的問題便是要如何動態的產生星期x、星期x、x月,又如果user換成是外國人,他們習慣一周第一天是禮拜天、而且每周七天可不叫星期x而是SUN、Mon等表示,用if-than-else或switch判斷嗎?喔,別傻了?JDK裡面早有巨人的肩膀可以讓你站在上面了,這時便需要javax.text.DateFormatSymbols類別了。

這個類別封裝了區域化的date-time格式資料,像是月份的名稱、一星期各天的名稱、時區資料等。DateFormat和SimpleDateFormat都是使用DateFormatSymbols來封裝資訊。

當然API javadoc中說明通常不直接拿DateFormatSymbols來使用,但在我們要自己製作Calendar時拿來用無何不妥,可以省下許多程式碼與時間。

建構子:

  • DateFormatSymbols()
  • DateFormatSymbols(Locale locale)
    第二個建構子可傳進自訂的locale

重要方法:

  1. getMonths( )
  2. getShortMonths( )
  3. getShortWeekdays( )
  4. getShortWeekdays( )
    其他就不多加描述了,請參閱JDK文件或是直接參考下面的範例與結果



DateFormatSymbols smb=new DateFormatSymbols();
smb.getAmPmStrings();
//(java.lang.String[]) [上午, 下午]

DateFormatSymbols smb=new DateFormatSymbols();
smb.getEras();
//(java.lang.String[]) [西元前, 西元]
DateFormatSymbols smb=new DateFormatSymbols//(java.util.Locale.ENGLISH.US);
smb.getEras();//(java.lang.String[]) [BC, AD]

DateFormatSymbols smb=new DateFormatSymbols();
smb.getLocalPatternChars();
//(java.lang.String)GyMdkHmsSEDFwWahKzZ

DateFormatSymbols smb=new DateFormatSymbols//(java.util.Locale.ENGLISH.US);
smb.getLocalPatternChars();
//(java.lang.String) GyMdkHmsSEDFwWahKzZ

DateFormatSymbols smb=new DateFormatSymbols();
smb.getMonths();
//(java.lang.String[]) [一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月, ]

DateFormatSymbols smb=new DateFormatSymbols//(java.util.Locale.ENGLISH.US);
smb.getMonths();
//(java.lang.String[]) [January, February, March, April, May, June, July, August, September, October, November, December, ]

DateFormatSymbols smb=new DateFormatSymbols();
smb.getShortMonths();
//(java.lang.String[]) [一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月, ]

DateFormatSymbols smb=new DateFormatSymbols//(java.util.Locale.ENGLISH.US);
smb.getShortMonths();
//(java.lang.String[]) [Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, ]

DateFormatSymbols smb=new DateFormatSymbols();
smb.getShortWeekdays();
//(java.lang.String[]) [, 星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六]

DateFormatSymbols smb=new DateFormatSymbols//(java.util.Locale.ENGLISH.US);
smb.getShortWeekdays();
//(java.lang.String[]) [, Sun, Mon, Tue, Wed, Thu, Fri, Sat]

DateFormatSymbols smb=new DateFormatSymbols();
smb.getWeekdays();
//(java.lang.String[]) [, 星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六]

DateFormatSymbols smb=new DateFormatSymbols//(java.util.Locale.ENGLISH.US);
smb.getWeekdays();
//(java.lang.String[]) [, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]


DateFormatSymbols smb=new DateFormatSymbols();
smb.getZoneStrings();
//(java.lang.String[][]) [[America/Los_Angeles, 太平洋標準時間, PST, 太平洋日光節約時間, PDT], [PST, 太平洋標準時間, PST, 太平洋日光節約時間, PDT], [America/Denver, 山區標準時間, MST, 山區日光節約時間, MDT], [MST, 山區標準時間, MST, 山區日光節約時間, MDT], [America/Phoenix, 山區標準時間, MST, 山區日光節約時間, MDT], [PNT, 山區標準時間, MST, 山區日光節約時間, MDT], [America/Chicago, 中央標準時間, CST, 中央日光節約時間, CDT], [CST, 中央標準時間, CST, 中央日光節約時間, CDT], [America/New_York, 東方標準時間, EST, 東方日光節約時間, EDT], [EST, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Indianapolis, 東方標準時間, EST, 東方日光節約時間, EDT], [IET, 東方標準時間, EST, 東方日光節約時間, EDT], [Pacific/Honolulu, 夏威夷標準時間, HST, 夏威夷日光節約時間, HDT], [HST, 夏威夷標準時間, HST, 夏威夷日光節約時間, HDT], [America/Anchorage, 阿拉斯加標準時間, AKST, 阿拉斯加日光節約時間, AKDT], [AST, 阿拉斯加標準時間, AKST, 阿拉斯加日光節約時間, AKDT], [America/Halifax, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/St_Johns, 紐芬蘭標準時間, NST, 紐芬蘭日光節約時間, NDT], [CNT, 紐芬蘭標準時間, NST, 紐芬蘭日光節約時間, NDT], [Europe/Paris, 中歐時間, CET, 中歐夏令時間, CEST], [ECT, 中歐時間, CET, 中歐夏令時間, CEST], [GMT, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Casablanca, 西歐時間, WET, 西歐夏令時間, WEST], [Asia/Jerusalem, 以色列標準時間, IST, 以色列日光節約時間, IDT], [Asia/Tokyo, 日本標準時間, JST, 日本日光節約時間, JDT], [JST, 日本標準時間, JST, 日本日光節約時間, JDT], [Europe/Bucharest, 東歐時間, EET, 東歐夏令時間, EEST], [Asia/Shanghai, 中國標準時間, CST, 中國日光節約時間, CDT], [CTT, 中國標準時間, CST, 中國日光節約時間, CDT], [ACT, 中部標準時間 (北部各地區), CST, 中部夏令時間 (北部各地區), CST], [AET, 東方標準時間 (新南威爾斯), EST, 東方夏令時間 (新南威爾斯), EST], [AGT, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [ART, 東歐時間, EET, 東歐夏令時間, EEST], [Africa/Abidjan, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Accra, 迦納平均時間, GMT, 迦納夏令時間, GHST], [Africa/Addis_Ababa, 東非時間, EAT, 東非夏令時間, EAST], [Africa/Algiers, 中歐時間, CET, 中歐夏令時間, CEST], [Africa/Asmera, 東非時間, EAT, 東非夏令時間, EAST], [Africa/Bamako, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Bangui, 西非時間, WAT, 西非夏令時間, WAST], [Africa/Banjul, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Bissau, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Blantyre, 中非時間, CAT, 中非夏令時間, CAST], [Africa/Brazzaville, 西非時間, WAT, 西非夏令時間, WAST], [Africa/Bujumbura, 中非時間, CAT, 中非夏令時間, CAST], [Africa/Cairo, 東歐時間, EET, 東歐夏令時間, EEST], [Africa/Ceuta, 中歐時間, CET, 中歐夏令時間, CEST], [Africa/Conakry, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Dakar, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Dar_es_Salaam, 東非時間, EAT, 東非夏令時間, EAST], [Africa/Djibouti, 東非時間, EAT, 東非夏令時間, EAST], [Africa/Douala, 西非時間, WAT, 西非夏令時間, WAST], [Africa/El_Aaiun, 西歐時間, WET, 西歐夏令時間, WEST], [Africa/Freetown, 格林威治平均時間, GMT, 獅子山夏令時間, SLST], [Africa/Gaborone, 中非時間, CAT, 中非夏令時間, CAST], [Africa/Harare, 中非時間, CAT, 中非夏令時間, CAST], [Africa/Johannesburg, 南非標準時間, SAST, 南非夏令時間, SAST], [Africa/Kampala, 東非時間, EAT, 東非夏令時間, EAST], [Africa/Khartoum, 東非時間, EAT, 東非夏令時間, EAST], [Africa/Kigali, 中非時間, CAT, 中非夏令時間, CAST], [Africa/Kinshasa, 西非時間, WAT, 西非夏令時間, WAST], [Africa/Lagos, 西非時間, WAT, 西非夏令時間, WAST], [Africa/Libreville, 西非時間, WAT, 西非夏令時間, WAST], [Africa/Lome, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Luanda, 西非時間, WAT, 西非夏令時間, WAST], [Africa/Lubumbashi, 中非時間, CAT, 中非夏令時間, CAST], [Africa/Lusaka, 中非時間, CAT, 中非夏令時間, CAST], [Africa/Malabo, 西非時間, WAT, 西非夏令時間, WAST], [Africa/Maputo, 中非時間, CAT, 中非夏令時間, CAST], [Africa/Maseru, 南非標準時間, SAST, 南非夏令時間, SAST], [Africa/Mbabane, 南非標準時間, SAST, 南非夏令時間, SAST], [Africa/Mogadishu, 東非時間, EAT, 東非夏令時間, EAST], [Africa/Monrovia, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Nairobi, 東非時間, EAT, 東非夏令時間, EAST], [Africa/Ndjamena, 西非時間, WAT, 西非夏令時間, WAST], [Africa/Niamey, 西非時間, WAT, 西非夏令時間, WAST], [Africa/Nouakchott, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Ouagadougou, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Porto-Novo, 西非時間, WAT, 西非夏令時間, WAST], [Africa/Sao_Tome, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Timbuktu, 格林威治時間, GMT, 格林威治時間, GMT], [Africa/Tripoli, 東歐時間, EET, 東歐夏令時間, EEST], [Africa/Tunis, 中歐時間, CET, 中歐夏令時間, CEST], [Africa/Windhoek, 西非時間, WAT, 西非夏令時間, WAST], [America/Adak, 夏威夷-阿留申群島標準時間, HAST, 夏威夷-阿留申群島日光節約時間, HADT], [America/Anguilla, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Antigua, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Araguaina, 巴西利亞時間, BRT, 巴西利亞夏令時間, BRST], [America/Argentina/Buenos_Aires, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Argentina/Catamarca, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Argentina/ComodRivadavia, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Argentina/Cordoba, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Argentina/Jujuy, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Argentina/La_Rioja, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Argentina/Mendoza, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Argentina/Rio_Gallegos, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Argentina/San_Juan, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Argentina/Tucuman, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Argentina/Ushuaia, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Aruba, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Asuncion, 巴拉圭時間, PYT, 巴拉圭夏令時間, PYST], [America/Atikokan, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Atka, 夏威夷-阿留申群島標準時間, HAST, 夏威夷-阿留申群島日光節約時間, HADT], [America/Bahia, 巴西利亞時間, BRT, 巴西利亞夏令時間, BRST], [America/Barbados, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Belem, 巴西利亞時間, BRT, 巴西利亞夏令時間, BRST], [America/Belize, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Blanc-Sablon, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Boa_Vista, 亞馬遜時間, AMT, 亞馬遜夏令時間, AMST], [America/Bogota, 哥倫比亞時間, COT, 哥倫比亞夏令時間, COST], [America/Boise, 山區標準時間, MST, 山區日光節約時間, MDT], [America/Buenos_Aires, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Cambridge_Bay, 山區標準時間, MST, 山區日光節約時間, MDT], [America/Campo_Grande, 亞馬遜時間, AMT, 亞馬遜夏令時間, AMST], [America/Cancun, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Caracas, 委內瑞拉時間, VET, 委內瑞拉夏令時間, VEST], [America/Catamarca, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Cayenne, 法屬圭亞那時間, GFT, 法屬圭亞那夏令時間, GFST], [America/Cayman, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Chihuahua, 山區標準時間, MST, 山區日光節約時間, MDT], [America/Coral_Harbour, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Cordoba, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Costa_Rica, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Cuiaba, 亞馬遜時間, AMT, 亞馬遜夏令時間, AMST], [America/Curacao, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Danmarkshavn, 格林威治時間, GMT, 格林威治時間, GMT], [America/Dawson, 太平洋標準時間, PST, 太平洋日光節約時間, PDT], [America/Dawson_Creek, 山區標準時間, MST, 山區日光節約時間, MDT], [America/Detroit, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Dominica, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Edmonton, 山區標準時間, MST, 山區日光節約時間, MDT], [America/Eirunepe, Acre 時間, ACT, Acre 夏令時間, ACST], [America/El_Salvador, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Ensenada, 太平洋標準時間, PST, 太平洋日光節約時間, PDT], [America/Fort_Wayne, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Fortaleza, 巴西利亞時間, BRT, 巴西利亞夏令時間, BRST], [America/Glace_Bay, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Godthab, 西格林蘭島時間, WGT, 西格林蘭島夏令時間, WGST], [America/Goose_Bay, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Grand_Turk, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Grenada, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Guadeloupe, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Guatemala, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Guayaquil, 厄瓜多爾時間, ECT, 厄瓜多爾夏令時間, ECST], [America/Guyana, 蓋亞那時間, GYT, 蓋亞那夏令時間, GYST], [America/Havana, Cuba Standard Time, CST, Cuba Daylight Time, CDT], [America/Hermosillo, 山區標準時間, MST, 山區日光節約時間, MDT], [America/Indiana/Indianapolis, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Indiana/Knox, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Indiana/Marengo, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Indiana/Petersburg, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Indiana/Vevay, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Indiana/Vincennes, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Inuvik, 山區標準時間, MST, 山區日光節約時間, MDT], [America/Iqaluit, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Jamaica, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Jujuy, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Juneau, 阿拉斯加標準時間, AKST, 阿拉斯加日光節約時間, AKDT], [America/Kentucky/Louisville, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Kentucky/Monticello, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Knox_IN, 中央標準時間, CST, 中央日光節約時間, CDT], [America/La_Paz, 玻利維亞時間, BOT, 玻利維亞夏令時間, BOST], [America/Lima, 祕魯時間, PET, 祕魯夏令時間, PEST], [America/Louisville, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Maceio, 巴西利亞時間, BRT, 巴西利亞夏令時間, BRST], [America/Managua, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Manaus, 亞馬遜時間, AMT, 亞馬遜夏令時間, AMST], [America/Martinique, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Mazatlan, 山區標準時間, MST, 山區日光節約時間, MDT], [America/Mendoza, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Menominee, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Merida, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Mexico_City, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Miquelon, 皮埃爾島及密克隆島標準時間, PMST, 皮埃爾島及密克隆島日光節約時間, PMDT], [America/Moncton, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Montevideo, 烏拉圭時間, UYT, 烏拉圭夏令時間, UYST], [America/Monterrey, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Montreal, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Montserrat, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Nassau, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Nipigon, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Nome, 阿拉斯加標準時間, AKST, 阿拉斯加日光節約時間, AKDT], [America/Noronha, 費爾南多-迪諾羅尼亞時間, FNT, 費爾南多-迪諾羅尼亞夏令時間, FNST], [America/North_Dakota/Center, 中央標準時間, CST, 中央日光節約時間, CDT], [America/North_Dakota/New_Salem, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Panama, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Pangnirtung, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Paramaribo, 蘇利南時間, SRT, 蘇利南夏令時間, SRST], [America/Port-au-Prince, 東方標準時間, EST, 東方日光節約時間, EDT], [America/Port_of_Spain, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Porto_Acre, Acre 時間, ACT, Acre 夏令時間, ACST], [America/Porto_Velho, 亞馬遜時間, AMT, 亞馬遜夏令時間, AMST], [America/Puerto_Rico, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Rainy_River, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Rankin_Inlet, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Recife, 巴西利亞時間, BRT, 巴西利亞夏令時間, BRST], [America/Regina, 中央標準時間, CST, 中央日光節約時間, CDT], [America/Rio_Branco, Acre 時間, ACT, Acre 夏令時間, ACST], [America/Rosario, 阿根廷時間, ART, 阿根廷夏令時間, ARST], [America/Santiago, 智利時間, CLT, 智利夏令時間, CLST], [America/Santo_Domingo, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Sao_Paulo, 巴西利亞時間, BRT, 巴西利亞夏令時間, BRST], [America/Scoresbysund, 東格林島時間, EGT, 東格林島夏令時間, EGST], [America/Shiprock, 山區標準時間, MST, 山區日光節約時間, MDT], [America/St_Kitts, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/St_Lucia, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/St_Thomas, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/St_Vincent, 大西洋標準時間, AST, 大西洋日光節約時間, ADT], [America/Swift_Current, 中央標準時間, CST, 中央日光...

DateFormatSymbols smb=new DateFormatSymbols//(java.util.Locale.ENGLISH.US);
smb.getZoneStrings();
//(java.lang.String[][]) [[America/Los_Angeles, Pacific Standard Time, PST, Pacific Daylight Time, PDT], [PST, Pacific Standard Time, PST, Pacific Daylight Time, PDT], [America/Denver, Mountain Standard Time, MST, Mountain Daylight Time, MDT], [MST, Mountain Standard Time, MST, Mountain Daylight Time, MDT], [America/Phoenix, Mountain Standard Time, MST, Mountain Daylight Time, MDT], [PNT, Mountain Standard Time, MST, Mountain Daylight Time, MDT], [America/Chicago, Central Standard Time, CST, Central Daylight Time, CDT], [CST, Central Standard Time, CST, Central Daylight Time, CDT], [America/New_York, Eastern Standard Time, EST, Eastern Daylight Time, EDT], [EST, Eastern Standard Time, EST, Eastern Daylight Time, EDT], [America/Indianapolis, Eastern Standard Time, EST, Eastern Daylight Time, EDT], [IET, Eastern Standard Time, EST, Eastern Daylight Time, EDT], [Pacific/Honolulu, Hawaii Standard Time, HST, Hawaii Daylight Time, HDT], [HST, Hawaii Standard Time, HST, Hawaii Daylight Time, HDT], [America/Anchorage, Alaska Standard Time, AKST, Alaska Daylight Time, AKDT], [AST, Alaska Standard Time, AKST, Alaska Daylight Time, AKDT], [America/Halifax, Atlantic Standard Time, AST, Atlantic Daylight Time, ADT], [America/St_Johns, Newfoundland Standard Time, NST, Newfoundland Daylight Time, NDT], [CNT, Newfoundland Standard Time, NST, Newfoundland Daylight Time, NDT], [Europe/Paris, Central European Time, CET, Central European Summer Time, CEST], [ECT, Central European Time, CET, Central European Summer Time, CEST], [GMT, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Casablanca, Western European Time, WET, Western European Summer Time, WEST], [Asia/Jerusalem, Israel Standard Time, IST, Israel Daylight Time, IDT], [Asia/Tokyo, Japan Standard Time, JST, Japan Daylight Time, JDT], [JST, Japan Standard Time, JST, Japan Daylight Time, JDT], [Europe/Bucharest, Eastern European Time, EET, Eastern European Summer Time, EEST], [Asia/Shanghai, China Standard Time, CST, China Daylight Time, CDT], [CTT, China Standard Time, CST, China Daylight Time, CDT], [ACT, Central Standard Time (Northern Territory), CST, Central Summer Time (Northern Territory), CST], [AET, Eastern Standard Time (New South Wales), EST, Eastern Summer Time (New South Wales), EST], [AGT, Argentine Time, ART, Argentine Summer Time, ARST], [ART, Eastern European Time, EET, Eastern European Summer Time, EEST], [Africa/Abidjan, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Accra, Ghana Mean Time, GMT, Ghana Summer Time, GHST], [Africa/Addis_Ababa, Eastern African Time, EAT, Eastern African Summer Time, EAST], [Africa/Algiers, Central European Time, CET, Central European Summer Time, CEST], [Africa/Asmara, Eastern African Time, EAT, Eastern African Summer Time, EAST], [Africa/Asmera, Eastern African Time, EAT, Eastern African Summer Time, EAST], [Africa/Bamako, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Bangui, Western African Time, WAT, Western African Summer Time, WAST], [Africa/Banjul, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Bissau, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Blantyre, Central African Time, CAT, Central African Summer Time, CAST], [Africa/Brazzaville, Western African Time, WAT, Western African Summer Time, WAST], [Africa/Bujumbura, Central African Time, CAT, Central African Summer Time, CAST], [Africa/Cairo, Eastern European Time, EET, Eastern European Summer Time, EEST], [Africa/Ceuta, Central European Time, CET, Central European Summer Time, CEST], [Africa/Conakry, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Dakar, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Dar_es_Salaam, Eastern African Time, EAT, Eastern African Summer Time, EAST], [Africa/Djibouti, Eastern African Time, EAT, Eastern African Summer Time, EAST], [Africa/Douala, Western African Time, WAT, Western African Summer Time, WAST], [Africa/El_Aaiun, Western European Time, WET, Western European Summer Time, WEST], [Africa/Freetown, Greenwich Mean Time, GMT, Sierra Leone Summer Time, SLST], [Africa/Gaborone, Central African Time, CAT, Central African Summer Time, CAST], [Africa/Harare, Central African Time, CAT, Central African Summer Time, CAST], [Africa/Johannesburg, South Africa Standard Time, SAST, South Africa Summer Time, SAST], [Africa/Kampala, Eastern African Time, EAT, Eastern African Summer Time, EAST], [Africa/Khartoum, Eastern African Time, EAT, Eastern African Summer Time, EAST], [Africa/Kigali, Central African Time, CAT, Central African Summer Time, CAST], [Africa/Kinshasa, Western African Time, WAT, Western African Summer Time, WAST], [Africa/Lagos, Western African Time, WAT, Western African Summer Time, WAST], [Africa/Libreville, Western African Time, WAT, Western African Summer Time, WAST], [Africa/Lome, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Luanda, Western African Time, WAT, Western African Summer Time, WAST], [Africa/Lubumbashi, Central African Time, CAT, Central African Summer Time, CAST], [Africa/Lusaka, Central African Time, CAT, Central African Summer Time, CAST], [Africa/Malabo, Western African Time, WAT, Western African Summer Time, WAST], [Africa/Maputo, Central African Time, CAT, Central African Summer Time, CAST], [Africa/Maseru, South Africa Standard Time, SAST, South Africa Summer Time, SAST], [Africa/Mbabane, South Africa Standard Time, SAST, South Africa Summer Time, SAST], [Africa/Mogadishu, Eastern African Time, EAT, Eastern African Summer Time, EAST], [Africa/Monrovia, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Nairobi, Eastern African Time, EAT, Eastern African Summer Time, EAST], [Africa/Ndjamena, Western African Time, WAT, Western African Summer Time, WAST], [Africa/Niamey, Western African Time, WAT, Western African Summer Time, WAST], [Africa/Nouakchott, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Ouagadougou, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Porto-Novo, Western African Time, WAT, Western African Summer Time, WAST], [Africa/Sao_Tome, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Timbuktu, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [Africa/Tripoli, Eastern European Time, EET, Eastern European Summer Time, EEST], [Africa/Tunis, Central European Time, CET, Central European Summer Time, CEST], [Africa/Windhoek, Western African Time, WAT, Western African Summer Time, WAST], [America/Adak, Hawaii-Aleutian Standard Time, HAST, Hawaii-Aleutian Daylight Time, HADT], [America/Anguilla, Atlantic Standard Time, AST, Atlantic Daylight Time, ADT], [America/Antigua, Atlantic Standard Time, AST, Atlantic Daylight Time, ADT], [America/Araguaina, Brasilia Time, BRT, Brasilia Summer Time, BRST], [America/Argentina/Buenos_Aires, Argentine Time, ART, Argentine Summer Time, ARST], [America/Argentina/Catamarca, Argentine Time, ART, Argentine Summer Time, ARST], [America/Argentina/ComodRivadavia, Argentine Time, ART, Argentine Summer Time, ARST], [America/Argentina/Cordoba, Argentine Time, ART, Argentine Summer Time, ARST], [America/Argentina/Jujuy, Argentine Time, ART, Argentine Summer Time, ARST], [America/Argentina/La_Rioja, Argentine Time, ART, Argentine Summer Time, ARST], [America/Argentina/Mendoza, Argentine Time, ART, Argentine Summer Time, ARST], [America/Argentina/Rio_Gallegos, Argentine Time, ART, Argentine Summer Time, ARST], [America/Argentina/San_Juan, Argentine Time, ART, Argentine Summer Time, ARST], [America/Argentina/Tucuman, Argentine Time, ART, Argentine Summer Time, ARST], [America/Argentina/Ushuaia, Argentine Time, ART, Argentine Summer Time, ARST], [America/Aruba, Atlantic Standard Time, AST, Atlantic Daylight Time, ADT], [America/Asuncion, Paraguay Time, PYT, Paraguay Summer Time, PYST], [America/Atikokan, Eastern Standard Time, EST, Eastern Daylight Time, EDT], [America/Atka, Hawaii-Aleutian Standard Time, HAST, Hawaii-Aleutian Daylight Time, HADT], [America/Bahia, Brasilia Time, BRT, Brasilia Summer Time, BRST], [America/Barbados, Atlantic Standard Time, AST, Atlantic Daylight Time, ADT], [America/Belem, Brasilia Time, BRT, Brasilia Summer Time, BRST], [America/Belize, Central Standard Time, CST, Central Daylight Time, CDT], [America/Blanc-Sablon, Atlantic Standard Time, AST, Atlantic Daylight Time, ADT], [America/Boa_Vista, Amazon Time, AMT, Amazon Summer Time, AMST], [America/Bogota, Colombia Time, COT, Colombia Summer Time, COST], [America/Boise, Mountain Standard Time, MST, Mountain Daylight Time, MDT], [America/Buenos_Aires, Argentine Time, ART, Argentine Summer Time, ARST], [America/Cambridge_Bay, Mountain Standard Time, MST, Mountain Daylight Time, MDT], [America/Campo_Grande, Amazon Time, AMT, Amazon Summer Time, AMST], [America/Cancun, Central Standard Time, CST, Central Daylight Time, CDT], [America/Caracas, Venezuela Time, VET, Venezuela Summer Time, VEST], [America/Catamarca, Argentine Time, ART, Argentine Summer Time, ARST], [America/Cayenne, French Guiana Time, GFT, French Guiana Summer Time, GFST], [America/Cayman, Eastern Standard Time, EST, Eastern Daylight Time, EDT], [America/Chihuahua, Mountain Standard Time, MST, Mountain Daylight Time, MDT], [America/Coral_Harbour, Eastern Standard Time, EST, Eastern Daylight Time, EDT], [America/Cordoba, Argentine Time, ART, Argentine Summer Time, ARST], [America/Costa_Rica, Central Standard Time, CST, Central Daylight Time, CDT], [America/Cuiaba, Amazon Time, AMT, Amazon Summer Time, AMST], [America/Curacao, Atlantic Standard Time, AST, Atlantic Daylight Time, ADT], [America/Danmarkshavn, Greenwich Mean Time, GMT, Greenwich Mean Time, GMT], [America/Dawson, Pacific Standard Time, PST, Pacific Daylight Time, PDT], [America/Dawson_Creek, Mountain Standard Time, MST, Mountain Daylight Time, MDT], [America/Detroit, Eastern Standard Time, EST, Eastern Daylight Time, EDT], [America/Dominica, Atlantic Standard Time, AST, Atlantic Daylight Time, ADT], [America/Edmonton, Mountain Standard Time, ...
DateFormatSymbols smb=new DateFormatSymbols();
smb.getAvailableLocales();
//(java.util.Locale[]) [ja_JP, es_PE, en, ja_JP_JP, es_PA, sr_BA, mk, es_GT, ar_AE, no_NO, sq_AL, bg, ar_IQ, ar_YE, hu, pt_PT, el_CY, ar_QA, mk_MK, sv, de_CH, en_US, fi_FI, is, cs, en_MT, sl_SI, sk_SK, it, tr_TR, zh, th, ar_SA, no, en_GB, sr_CS, lt, ro, en_NZ, no_NO_NY, lt_LT, es_NI, nl, ga_IE, fr_BE, es_ES, ar_LB, ko, fr_CA, et_EE, ar_KW, sr_RS, es_US, es_MX, ar_SD, in_ID, ru, lv, es_UY, lv_LV, iw, pt_BR, ar_SY, hr, et, es_DO, fr_CH, hi_IN, es_VE, ar_BH, en_PH, ar_TN, fi, de_AT, es, nl_NL, es_EC, zh_TW, ar_JO, be, is_IS, es_CO, es_CR, es_CL, ar_EG, en_ZA, th_TH, el_GR, it_IT, ca, hu_HU, fr, en_IE, uk_UA, pl_PL, fr_LU, nl_BE, en_IN, ca_ES, ar_MA, es_BO, en_AU, sr, zh_SG, pt, uk, es_SV, ru_RU, ko_KR, vi, ar_DZ, vi_VN, sr_ME, sq, ar_LY, ar, zh_CN, be_BY, zh_HK, ja, iw_IL, bg_BG, in, mt_MT, es_PY, sl, fr_FR, cs_CZ, it_CH, ro_RO, es_PR, en_CA, de_DE, ga, de_LU, de, es_AR, sk, ms_MY, hr_HR, en_SG, da, mt, pl, ar_OM, tr, th_TH_TH, el, ms, sv_SE, da_DK, es_HN]


DateFormatSymbols smb=new DateFormatSymbols//(java.util.Locale.ENGLISH.US);
smb.getAvailableLocales();
//(java.util.Locale[]) [ja_JP, es_PE, en, ja_JP_JP, es_PA, sr_BA, mk, es_GT, ar_AE, no_NO, sq_AL, bg, ar_IQ, ar_YE, hu, pt_PT, el_CY, ar_QA, mk_MK, sv, de_CH, en_US, fi_FI, is, cs, en_MT, sl_SI, sk_SK, it, tr_TR, zh, th, ar_SA, no, en_GB, sr_CS, lt, ro, en_NZ, no_NO_NY, lt_LT, es_NI, nl, ga_IE, fr_BE, es_ES, ar_LB, ko, fr_CA, et_EE, ar_KW, sr_RS, es_US, es_MX, ar_SD, in_ID, ru, lv, es_UY, lv_LV, iw, pt_BR, ar_SY, hr, et, es_DO, fr_CH, hi_IN, es_VE, ar_BH, en_PH, ar_TN, fi, de_AT, es, nl_NL, es_EC, zh_TW, ar_JO, be, is_IS, es_CO, es_CR, es_CL, ar_EG, en_ZA, th_TH, el_GR, it_IT, ca, hu_HU, fr, en_IE, uk_UA, pl_PL, fr_LU, nl_BE, en_IN, ca_ES, ar_MA, es_BO, en_AU, sr, zh_SG, pt, uk, es_SV, ru_RU, ko_KR, vi, ar_DZ, vi_VN, sr_ME, sq, ar_LY, ar, zh_CN, be_BY, zh_HK, ja, iw_IL, bg_BG, in, mt_MT, es_PY, sl, fr_FR, cs_CZ, it_CH, ro_RO, es_PR, en_CA, de_DE, ga, de_LU, de, es_AR, sk, ms_MY, hr_HR, en_SG, da, mt, pl, ar_OM, tr, th_TH_TH, el, ms, sv_SE, da_DK, es_HN]

Eclipse 3.3 新功能Mylyn 線上課程及文章

Eclipse 3.3(Europa)中的Mylyn(之前叫Mylar)是以任務導向的UI,可用來簡化IDE中大型系統的開發所造成的資訊副載(Information Overloading),簡單的說就是可以幫你把大專案的開發簡化成任務導向,此外還可以做為Bug追蹤等應用,或許講了這麼多,還是不了解,不過透過下面的一分線上課程及兩篇文章,只要仔細研讀,就知道這項新功能的用處了:

Webinar: Task-Focused Programming with Mylyn by Mik Kersten (56 min, Oct 2006)

Task Focused Programming with [Mylyn], Part 1: Integrated task management for Eclipse by Mik Kersten (Oct 2006)

Task Focused Programming with [Mylyn], Part 2: Automated context management for Eclipse by Mik Kersten (Oct 2006)

以上連結出於Eclipse官方網站。

POI HSSFCellStyle

HSSFCellStyle用來設定儲存格格式、字型、顏色、字大小等。

excel XLS格式所用的CellStyle其使用觀念類似GIF的索引色票,
也就是說你如果將xls內的某個cellStyle變更,則其他之前設到這個cellStyle的儲存格都會跟著變,
要特別注意。
(若要分辨個別cell所使用的style是否相同可由cell.getCellStyle取得style再由style.getIndex()取得索引編號,藉此來分辨是否使用同一索引的style)

//範例

HSSFCellStyle style=wb.createCellStyle();
HSSFFont font=wb.createFont();
font.setFontName("新細明體");
font.setColor(HSSFColor.RED.index);
style.setFont(font);
cell.setCellStyle(style);
style.setFillForegroundColor((short)HSSFColor.LIGHT_BLUE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

POI調整column欄寬

sheet.setColumnWidth((short)0,(short)(256*10));

  • 第一個參數是column index,由0開始
  • 第二個參數是寬度256為一個字

POI設定列Row高度

sheet.createRow(0).setHeight((short)(20*50));

注意單位是Twips,若要設xx points則要乘以20,最後記得轉short

POI 設定sheet名稱為中文

HSSFSheet sheet=wb.createSheet();
wb.setSheetName(i,"分頁"+String.valueOf(i),(short)HSSFWorkbook.ENCODING_UTF_16);

結果:

2007年8月9日 星期四

用javascript清空HTML<select>內所有option


<script>
var sel=document.frmName.selName;
//clear listbox
for(var i=sel.options.length-1;i>=0;i--)
{ sel.options.remove(i); }
</script>

2007年8月8日 星期三

Tomcat JDBC DataSource組態注意

在Tomcat中設定server.xml來組態設定一或多組DataSource,除了可以從JNDI位置取得該資料來源外,還有Connection Pooling的優點。
但關於Connection Pool設定若是不當,輕則效能不彰、重則導致無法取得資料庫連線而造成程式錯誤。
下面是Tomcat 官方文件關於在server.xml設定DataSource的範例:


<Context path="/DBTest" docBase="DBTest"
debug="5" reloadable="true" crossContext="true">
<!-- maxActive: Maximum number of dB connections in pool. Make sure you
configure your mysqld max_connections large enough to handle
all of your db connections. Set to 0 for no limit.
-->
<!-- maxIdle: Maximum number of idle dB connections to retain in pool.
Set to -1 for no limit. See also the DBCP documentation on this
and the minEvictableIdleTimeMillis configuration parameter.
-->
<!-- maxWait: Maximum time to wait for a dB connection to become available
in ms, in this example 10 seconds. An Exception is thrown if
this timeout is exceeded. Set to -1 to wait indefinitely.
-->
<!-- username and password: MySQL dB username and password for dB connections -->
<!-- driverClassName: Class name for the old mm.mysql JDBC driver is
org.gjt.mm.mysql.Driver - we recommend using Connector/J though.
Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.
-->

<!-- url: The JDBC connection url for connecting to your MySQL dB.
The autoReconnect=true argument to the url makes sure that the
mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
connection. mysqld by default closes idle connections after 8 hours.
-->
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>
</context>



其中注意兩個參數:

  • maxActive: 代表Pool可容納Connection的最大數量
  • maxIdlel:代表閒置時保留在Pool的Connection數量

親身經歷的事--在連線數使用超過maxActive時,後面取得Connection都為null,導致無法取得資料,造成程式錯誤!

WTP 簡介

Eclipse Web Tools Platform(WTP)

擴充了Eclipse platform,包含了許多工具可用來開發web application和JavaEE application。
這些工具有原始碼編輯器、圖形化的編輯器、精靈和許多內建的應用程式以簡化開發、幫助部署、運行、測試等工作。

WTP主要包含兩個子專案:
  • Web Standard Tools (WST) --> html、web service、xml等支援工具
  • J2EE Standard Tools (JST) --> EJB、Servlet、JSP、Java web service等Java特定的項目的支援工具
更詳細介紹,可參考:O'reilly ONJava.com - Eclipse Web Tools(英文)

2007年8月6日 星期一

javascript:實用函數檢查某組checkBox是否有至少選擇一項

用來驗證表單,快速套用

function haveCkedInCheckBox(selectObj)
{
if(selectObj!=null)
{
if(typeof selectObj.length!='undefined')
{
 for(var i=0;i<selectObj.length;i++)
   {
if(selectObj[i].checked)
    return true;
   }
}
else
{
return selectObj.checked;
}
}

return false;
}

javascript:實用函數 select All CheckBox

常在網頁上看到的技巧:點選最上個checkbox就可以進行全選/全取消 所有的checkBox,以下提供函數,稍經修改即可快速套用(修改chkAll_onclick()的來源及目的物件)--


function chkAll_onclick()
{
var obj=document.getElementById('chkAll');
var objs=frmDelTemp.checkedScoreCodes;
binaryCheckAll(obj,objs);
}

function binaryCheckAll(chkObj,beSelectedChkObjs)
{
if(chkObj!=null && beSelectedChkObjs!=null)
{
if(typeof beSelectedChkObjs.length=='undefined') //uni one row
{
beSelectedChkObjs.checked=chkObj.checked;
}
else
{
for (var i=0;i<beSelectedChkObjs.length;i++)
{
beSelectedChkObjs[i].checked=chkObj.checked;
}
}
}
}

2007年8月1日 星期三

JavaFX:在eclipse中執行fx檔案出錯的解決方法 (JavaFX:How to resolve the problem executing fx file in eclipse)

很高興的裝上新玩意- JavaFX eclipse plugin來玩玩,在之前的文(Java FX in Eclipse)有介紹其他玩家提供的教學影片,讓你很順利的進行安裝、HellowWorld、並執行。
記得上次裝還真的很順利,但今天換個地方裝換用eclipse 3.3就出現了以下錯誤:

not found: File4.fx
compile thread: Thread[AWT-EventQueue-0,6,main]
compile 0.0
init: 0.141

恩.....奇怪.......
反編(jad很好用,加上還有eclipse外掛)之後,大概看了原始碼知道了在執行fx檔案時的做法是用getClassLoader( ).getResource( ) 方式執行的,所以八成是classpath的問題,浪費的點時間來try-error果然解決了,以下提供各位參考:
1. 在eclipse中執行fx前打開的Run Dialog,在新建一個java fx configuration後切換到classpath頁籤,點選user entries節點,然後按下右邊的Advanced..按鈕,接著選add folders按下ok後,選取在你專案中fx檔案所在目錄後按下OK!
2. 接著,就沒有啥要注意了,按下Apply後,按下Run,瞧......問題就解決了.....

懶的看步驟說明,就看上圖的步驟,一目了然囉............

--------------------------------------------------------------------------------------------
I've found a new toy - Java FX eclipse plugin, and I installed it. As the previous article (Java FX in Eclipse) mentioned that there's someone have made some movie clips to introduce how to install and run your first java fx application in eclipse.
The last time I installed and run the plugin successfully. But when I install it again in eclipse 3.3,I got some problem like following:


not found: File4.fx
compile thread: Thread[AWT-EventQueue-0,6,main]
compile 0.0
init: 0.141

oh,it's really strange..

After I decomplie the related classes in javafx jar files(by using jad), and I realized that
it loads the fx file by using getClassLoader( ).getResource( ) . So, I guess there's something wrong with my classpath. So,let's have try-error to find the answer to resolve the problem. Although it takes time ,finally I found the method let fx runs successfully:

1. before running fx file, open the Run Dialog in eclipse,make a new Java FX app configuration,
and then go to the classpath tab,click the user entries node,and click the Advanced.. button,
select add folders,ok.

2. Then ,these is nothing to do additionally. Just click Apply and Run button,and the problem
will not a problem any more.


you can setup your configuration by following steps in up picture.

JAVA FX 基礎

  1. 分兩大部分:
    1. Java FX script
      • 靜態宣告式script語言
    2. Java FX Mobile
      • 用來開發應用於可攜裝置的平台
  2. 4個基本型別:
    1. String (java.lang.String)
    2. Boolean (java.lang.Boolean)
    3. Number (java.lang.Number)
    4. Integer (java.lang.BigInteger,byte, short, int, long)
      宣告方法: var varName:typeName=value;
      var varName:typeName=[itemval1,itemval2,itemval3];
  3. 邏輯運算子
    Java JavaFX
    && and
    || or
    ! not
  4. 在fx檔將變數寫到std out:

    import java.lang.System;
    var i:Integer=10;
    var str:String="String ddd";
    System.out.println("Hello {i} {str}");
  5. 宣告變數其尾(=號前)可指定下列符號,以限定其集合限制:
    1. ? 選擇性,可為null(零或一個元數)
    2. + 一或多個元素
    3. * 零或多個元素
      Ex.        var nums:Number* = [5, 9, 13];

  6. 字串可包於單引號或雙引號間。
  7. 若要串接字串,相較於java使用+號,java fx在字串中使用大括號,如下:

    var name="mark";
    var title="Manager";
    var complete_name="{title} {name}";

  8. 在上面的大括號也可以是判斷式,如下:

    var truth="1>2 is {if 1>2 then "true" else "false" }";

    這種情況下雙引號內有雙引號,是允許的。(相較java不可)
  9. java fx陣列代表一串物件,但陣列本身不是物件。
  10. sizeof varName 可用來取得varName陣列的包含元素數目。
  11. 宣告1到100整數陣列:
    var myint:Integer=[1..100];
  12. 陣列操作語法: insert、delete、select 、foreach
    1. insert
      var ints=[1,2,3];
      insert 20 into ints; //[1,2,3,20]
      insert 30 as first into ints; //[30,1,2,3,20]
      insert [100,200] as last into ints; //[30,1,2,3,20,100,200]
      insert 99 before ints[.==2]; //[30,1,99,2,3,20,100,200]
      insert 88 after ints[5]; //[30,1,99,2,3,88,20,100,200]
    2. delete
      var ints=[1,2,3,4,5];
      delete ints[.==3]; //[1,2,4,5]
      delete ints[.>3]; //[1,2]
      delete ints; //[ ]
    3. select
      var s:Integer*= select n+n from n in [1,2,3]; //[2,4,6]
      var s2:Integer*=select n from n in [1,2,3,4,5,6] where (n%2==0); //[2,4,6]
      var s3:Integer*=select n*m from n in [1,2],m in[3,4] ; //[3,4,6,8]
    4. foreach
      var s:Integer*= foreach(n in [1,2],m in [3,4]) n*m;
  13. 跳脫java fx關鍵字,將關鍵字放在<< 和 >>之間。
  14. class宣告:
    1. 包含有attribute、function、operation
    2. 可extends多個class
    3. 範例:(from Learning JavaFX Script, Part 1: An Introduction to JavaFX Script for Java Programmers)

      class Person {

      attribute name: String;
      attribute parent: Person;
      attribute children: Person*;

      function getFamilyIncome(): Number;
      function getNumberOfChildren(): Number;

      operation marry(spouse: Person): Boolean;
      }

  15. 使用物件:

    1. import java.lang.System;

      class X {
      attribute a: Number;
      attribute b: Number;
      }

      attribute X.a = 10;
      attribute X.b = -1;

      var x = new X();
      var myXClass = X {
      a: 10
      b: -1
      };

    2. import java.util.Date;
      import java.lang.System;

      var date1 = new Date(95, 4, 23); // call a Java constructor
      var date2 = Date { // create the same date as an object literal
      month: 4
      date: 23
      year: 95
      };

      System.out.println(date1 == date2); // prints true
  16. 大不同:java fx的function和operation主體都在class定義之外。

    1. operation Person.marry(spouse: Person): Boolean {
      // Body of operation
      }
    2. class定義中一定要有參數和回傳類型,但在class定義外的function或operation主體可省略。
      operation Person.marry() {
      // Body of operation
      }
  17. java fx沒有constructor和setter,取而代之的是使用Trigger:
    (object creation、insert、delete、replace)
    1. objectCreation
      import java.lang.*;
      class X{ attribute serial:Integer*;}
      trigger on new X{ insert [10,20] as last into serial}
      var x=new X();
    2. insert
      import java.lang.*;
      class X{ attribute serial:Integer*;}
      trigger on insert num into X.serial{ System.out.println("hi"); }
      var x = new X();
      insert 12 into x.nums;
    3. delete
      import java.lang.*;
      class X{ attribute serial:Integer*;}
      trigger on delete num from X.serial{ System.out.println("hi"); }
      var x = new X();
      delete x.serial[1];
    4. replace
      import java.lang.*;
      class X{ attribute serial:Integer*;}
      trigger on x.serial[olderVal]=newVal{ System.out.println("hi"); }
      var x = new X();
      delete x.serial[1];
  18. do{}敘述區塊:
    java fx程式是在AWT Event Dispatch Thread (EDT)中執行,而將程式碼放在do區塊中,可使該段程式於背景thread同步執行。
  19. 增進式評估:使用bind。

兩篇JavaFX簡介原文文章(Tow articles introduce JavaFX)

  1. Introduction to JavaFX Script (Oreilly ONJava)

  2. Learning JavaFX Script, Part 1: An Introduction to JavaFX Script for Java Programmers (java.sun.com)