全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1776
推到 Plurk!
推到 Facebook!

2003-03-28=《 JAVA週報 》

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-29 12:09:19 IP:61.221.xxx.xxx 未訂閱
╭══════════════════════════════╮ 2003-03-28=《 JAVA週報 》= ╰══════════════════════════════╯ ─── http://www.javatwo.net/javaweek/─── ════════════════════════════════ 重要訊息> JAVA週報搬新家,請讀者重新註冊 蕭松瀛專欄> 軟體道德 活動快訊> 2003 JavaTwo Friday 系列研討會 ( 4月18日 台北盛大擴大舉辦 all day ) 活動快訊>善用塑模工具,加速軟體開發產力 (4月3日 Borland 主辦) 爪哇小品>Java手機搶鮮上市 (黃富鴻) 爪哇教室> JBuilder 專欄(三):使用者介面設計 爪哇教室> 用 Java 一步一步建造自己的聊天室軟體(第三話) (Yinyin) 課程訊息>XML入門介紹 (4月8日到4月11日) 課程訊息> Java網路服務程式設計(4月14日到4月16日) 課程訊息> Java初階程式設計 (一三五夜間班 4月14日到4月23日) ---------------------------------------------------------------- 重要訊息> JAVA週報搬新家,請讀者重新註冊 http://www.javatwo.net/javaweek/ 好消息要跟大家分享,Java週報現在有自己的家囉! Java週報成立至今,已經有將近三年的時間,在這段期間,我們收到許 多讀者的鼓勵打氣、肯定與支持,當然也收到一些讀者的熱心批評指教 。點點滴滴,我們都記在心頭。同時,也時時刻刻不忘記我們的使命, --提供給所有Java派同門師兄姊妹更多的密技、新聞、消息及互相交流 的機會。因此我們有最受歡迎的洪志鵬專欄、有最HOT的焦點新聞、有 內容豐富的爪哇教室、有好康的活動快訊以及大家最喜愛的課程訊息。 在人力有限的情況下,我們加倍的努力,所希望的只是能帶動國內學習 Java的風氣及園地,讓大家可以有一個更好的管道得到更多的東西,進 而提升整體台灣本土的程式設計師的技術能力,也是對社會的一種回饋。 為了提供我們寶貴的Java週報讀者更多樣的週報內容以及更賞心悅目的 版面設計,於2003年4月起,Java週報將不再透過PCHome做發送的平台, 改由昇陽電腦教育訓練中心直接提供這項服務。 -如果您不想錯過期期精彩的週報的話 -如果你希望收到免費研討會的消息的話 -如果你希望有機會抽到精美贈品的話 -如果你希望一手掌握Java最新消息的話 ,請您立刻就到 http://www.javatwo.net/javaweek/ 登入您的資料,從四月一日之後,您將不間斷地收到由最頂尖的Java高手 撰文的技術文章-爪哇教室及最好康的"活動快訊",當然還有廣受大家喜愛 的"洪志鵬專欄"及"王森專欄"。 您的肯定是我們努力的最大動力,我們需要您繼續的支持,如同前言所述 ,Java週報的推出,最大的目的還是可以希望藉由每週推出內容豐富的技術 相關資訊,進而提升台灣全體的技術能力及競爭力,所以,請大家告訴大 家,在四月一日前,要記得回來訂閱電子報喔! http://www.javatwo.net/javaweek/ ------------------------------------------------------------------- 蕭松瀛專欄> 軟體道德 最近經濟不景氣,許多行業的荷包都縮水了,當然,一些公司在軟體的 費用支出上,也大幅縮水。縮水並不代表些什麼,但是需求還是有的, 只是是在更嚴苛的環境下來提這些需求,譬如同樣要做一個系統,但是 費用少了。Java 在這時候竄起,其中有一個很重要的原因是開發時間大 量縮短,大量的 API 可以重複使用,譬如寫一個 Socket 程式,可能三兩 下,不用五分鐘就可以徒手不靠工具寫出來,這樣的速度難怪MS 要推 出類似的語言 C# 。但是對許多企業來說,並沒有足夠的人來開發所需 要的應用程式,因此往往會請廠商撰寫,或是客制化產品,來吻合該企 業的需求。但是一旦請人寫,好處就是花錢了事,缺點就是當需求一再 變更時,可能就沒有接下來的二次預算了,因此這個問題讓許多公司企 業非常頭痛,當然,花點銀子請這些廠商修改,這些廠商還是願意,重 點是,這樣一來 IT 就沒有價值了,其次,也可能不再有經費了。 軟體業生存的模式有幾種,其中一種就是販賣 binary code,而原始碼不販 賣,你要買原始碼也可以,原始碼通常索價甚高,因此大部分的公司並 不購買原始碼,而購買 binarycode ,對 Java來說就是他的 byte code 。byte code 由於是中間碼,因此他的特性是可以解析,因此 JVM 才可以執行, 可以解析便可以反解,這也讓這些買家有了一種新的作法,便是買了你 的 byte code 之後,沒有維護,因此拿你的 code反解之後再來做一些修正 ,當然,這種行為通常已經違反軟體的合約,或是共識了,而在台灣, 通常也是睜一隻眼閉一隻眼不管。我歡迎大家反解我的程式碼去看,只 要不是屬於公司的財產,或是你大可光明正大的跟我要原始碼,我在好 幾場 JavaTwo 的演講中,使用的原始程式碼都不乏許多人來要,我從來 沒拒絕過,教學相長,但是如果是公司出貨的產品,很抱歉,不在我控 制的範圍內,也請你不要跟我要! ! 不過賣者無意,買者有心,就是會有合作的廠商,或是客戶,拿了你的 東西,去反解之後,看不懂,還打電話來問,或是問說我改成怎樣了, 怎麼不能跑,這時候我心裡暗罵三字經,嘴裡還要裝傻問怎麼改的,是 用繼承,還是依照我的 interface 重寫一個,當然,心裡同時也在想,繼 承?真是厲害!當然,如同性騷擾一般,我們也得負一些責任,為什麼 給人家的東西不混碼?其實我在學了一次教訓之後就請公司買了混碼器 ,只是第二次教訓來得晚,在買混碼器之前的另外一些東西,又發生一 樣的鳥事情,拿去用了,反解之後,改了不能跑,打電話來問。惡劣的 比喻就是小偷偷了電視之後,結果轉台沒畫面,打電話來問主人怎麼用 ,你想,主人想不想告你?做軟體的人,要尊重軟體,不尊重軟體也沒 關係,但是起碼有些道德!否則台灣的軟體怎麼發展?小小一個台灣, 兩年就碰了兩次,我不知道是幸運,還是倒楣?不過沒關係,沒關係, 是公司的財產!!如果你也在做軟體,如果你也再辛苦的寫程式,請你 在下手寫軟體之前,先想想是不是很辛苦,請你在反解別人的程式碼之 後,記住,不要因為看不懂而打電話或是發信去問人,這是很 不道德的,也可能為你惹上一身腥! -------------------------------------------------------------- 活動快訊> 2003 JavaTwo Friday 系列研討會 4/18 台北盛大擴大舉辦 all day 時間:2003/4/18(星期五) AM09:00-PM:16:20 地點:台北國際會議中心 地址:台北市信義路五段一號(101C/D 室) JavaTwo Friday技術研討會自開辦以來,各界反應與參與熱烈,每每一席 難求,在此對熱情支持JavaTwo Friday技術研討會的各界擁護者表達誠摯 的感謝, 並且為了回報各界熱烈的支持,特別於4/18(五)這天在台北國際 會議中心擴大舉辦JavaTwo Friday技術研討會,以饗同好,以饗同好,此 次JavaTwo Friday 擴大舉辦,機會難得,熱情支持 Java 的朋友可要好好把 握。 JavaTwo Friday技術研討會當天將精心策劃四個熱門議題,每一個主題都 將探討Java在企業中的實務運用,由經驗豐富的Java專業講師做最精彩的 剖析及詳盡展示,與會者將深入了解Java在各個企業應用的層面上的解 決方案,迅速掌握Java最新趨勢,精彩內容足以滿足您對Java領域中的熱 烈求知慾望,參加JavaTwo Friday,張開您的雙手,熱情擁抱Java。 * 研討會時間:2003/04/18 (五) AM09:00-PM16:20 * 研討會地點:台北國際會議中心(TICC) 台北市信義路五段一號 (101C、D 室) * 研討會費用:免費參加,請事先報名 * 主辦單位 :昇陽電腦、Macromedia、恆逸資訊共同合辦 * 適合對象 :研討會針對Java業界中的技術應用面,參加者至少需具備 熟悉Java語法,對Java技術有興趣者 線上報名: http://edu.uuu.com.tw/events/030319_form.jsp 研討會議程表: 時 間 議 程 講 師 ================================================== 08:30-09:00 來賓報到 09:00-09:30 開場致詞 昇陽電腦教育服務總經理/洪志鵬 ----------- ----------------------------- ----------------------- 09:30-10:50 Java 開發 WebService 之整合應用 恆逸資訊 資深講師/耿維德 -------- ----------------------------- ----------------------- 10:50-11:00 中場休息 ----------- ----------------------------- ----------------------- 09:30-10:50 Java 開發 WebService 之整合應用 恆逸資訊 資深講師/耿維德 -------- ----------------------------- ----------------------- 11:00-12:20 擴展 Web Services以改善網頁使用者介面 Macromedia大中華區資深產品工程師/倫永新 ----------- ----------------------------- ----------------------- 12:20-13:30 午餐(午餐請自理) ----------- ----------------------------- ----------------------- 13:00-13:30 來賓報到 ----------- ----------------------------- ----------------------- 13:30-14:50 JDBC 在分散式系統下的應用 恆逸資訊 技術顧問/梅玉成 ----------- ----------------------------- ----------------------- 14:50-15:00 中場休息 ----------- ----------------------------- ----------------------- 15:00-16:20 進階JSP設計實務 恆逸資訊 技術總監/孫三才 講題簡介: *********************************************************** Java 開發 WebService 之整合應用 時段: AM09:30-AM10:50 主講人:恆逸資訊 資深講師 耿維德 WebService 可以說是現行的 新興標準之一,藉由WebService 的相關溝通服務, 可使各異質系 統間可呼叫對方的功能, 達到整合的目的。而 Java 更是目前在 在各異質執行環境下功能最強大的執行平台, 其跨越平台的超 強能力, 更是深受國際大廠的喜愛, 成為企業系統最受歡迎的 平台之一。 當然對於 WebService 的支援更是必備的功能之一。 本研討會的目的就是希望能說明 Java(or J2EE) 對WebService 的支 援及發展,結合整合度最高的平台 Java 及整合度最高的標準, 達到一個前所未有的境界。 * 大綱: 1. WebService 的簡介 2. Java 平台 WebService 的發展 3. 異質系統的整合 ************************************************************ 擴展 Web Services以改善網頁使用者介面 時段: AM11:00-AM12:20 主講人:Macromedia 大中華區資深產品工程師 倫永新 先生 Web Services已變得日益重要,在短時間內,將成為大多數應用 程式的基礎。在這次演講中,我們將會提及各種和 Web Services 有關的技術,從開發工具至 Web Services 伺服器,從傳統的 HTML 頁面至使用 Web Services 的新一代 Web 應用程式等等。從開發的 角度來看,如果有一套簡易的方法減輕開發程序是最好不過的了 。我們會深入探討如何內省Web Services WSDL,並透過 。NET、 Java 及ColdFusion Markup Language 來調用 Web Services,而當中完 全不需要接觸WSDL 的語法。在擴展 Web Services 功能方面,我 們會示範一個耳目一新的用戶介面,當中使用了 Web Services 作 為邏輯運作的部份。另外,我們還會介紹不同的Web Services 伺服 器,讓各位瞭解如何透過各種標準的程式語言或較簡單的程式語 言來製作及佈署Web Services。 ************************************************************ JDBC 在分散式系統下的應用 時段: PM13:30-PM14:50 主講人:恆逸資訊 技術顧問 梅玉成 企業採用資訊系統的重要目的之一是希望能良好的運用資料, 這個過程約包含了 過程一 : 資料的收集(Collection) 過程二 : 資料的處理(Processing) 過程三 : 資料的儲存(Storage) 過程四 : 資料的分析(Analysis) 過程五 : 資料的預測(Forecasting) J2EE 架構提供了支援這些處理過程良好的平台及基礎,其中 "資料 的儲存(Storage)" 就是藉由 JDBC 完整的架構及強大的 API 所達成。 本次主題將涵蓋 JDBC 在分散式系統下的解決方案。 由 Two-Tier 架 構下 JDBC 之運用逐步延伸到進階的 Three-Tier 運用, Connection pool , Data Source ,XA Driver ,分散式系統下 Entity Bean 的運用及 JDBC Performance Tuning 等高階的議題。對於 J2EE 下 JDBC 運用的演進及 掌控的技術有完整的介紹。 * 大綱: 1. JDBC 基本架構 2. Two-Tier 架構下 JDBC 之運用 3. Three-Tier 架構下 JDBC 之運用 4. JDBC 分散式系統下的 Transactions 5. XADataSource 及 JNDI 6. 分散式系統下JDBC的調校 ****************************************************************** 進階JSP設計實務 時段: PM15:00-PM16:20 主講人:恆逸資訊 技術總監 孫三才 本場次將為各位介紹在以JSP開發 企業級的應用系統時必定會面臨的設計問題及解決的機制。 會中並介 紹一個特別設計的JSPWidget (code name Barong) : 一個能讓你以如同開發 client form 般的直覺方式來開發 JSP Web Application 的Framework -徹底解 決你 JSP Code /UI 混雜難寫難維護的痛!! * 大綱: 1. Event-Driven Computing Model 2. Server-side GUI Components 3. View State Persistence 4. Declative Validation ****************************************************************** 線上報名: http://edu.uuu.com.tw/events/030319_form.jsp 本研討會為免付費參加, 請您務必預先報名 **恕不接受現場報名 ** 活動洽詢電話:02-25149191 分機 155 謝小姐 --------------------------------------------------------------- 活動快訊>善用塑模工具,加速軟體開發產力 (4月3日 Borland 主辦) 塑模 (Modeling) 在軟體工程中扮演非常重要的角色,建立模型是確保 正確的系統分析之最好方法。在應用程式開發過程中,您是否曾考慮 採用 Modeling 工具來協助您以更快的速度,建構更好的軟體呢? 請來參加我們精心為您策劃的免費技術講座,以實例解說方式,讓您 快速瞭解 Modeling 在應用程式開發週期(Application Lifecycle Management) 中所扮演舉足輕重的角色,進而提昇軟體品質。 時間:92年 4 月 3 日 (星期四)2:00pm ~5:00pm 地點:龐畢度國際會議中心 台北市復興北路99號B1 (捷運木柵線,在南京復興站下車) 費用:完全免費 請將報名表填寫完整寄到 edu@Taiwan.sun.com , Subject:我想參加 善用塑模工具,加速軟體開發產力(4/3) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Yes, 我想參加 善用塑模工具,加速軟體開發產力 我的資料如下: 學員資料 姓名:﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍公司名稱:﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍ 部門:﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍職稱:﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍ 聯絡地址:﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍ 聯絡電話:(﹍)﹍﹍﹍﹍ EXT﹍﹍ 手機號碼:﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍ 傳真號碼:(﹍)﹍﹍﹍﹍﹍﹍﹍﹍ E-mail:﹍﹍﹍﹍@﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍ 手機號碼:﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍﹍ 或到http://www.javatwo.net/javaweek/ "活動訊息"專區進行線上報名 --------------------------------------------------------------- 爪哇小品>Java手機搶鮮上市 (黃富鴻) 隨著彩色手機的上市,Java也就也從黑白人生變成彩色了。這樣說一點 都不為過,全彩螢幕絕對是一個最絢麗的舞台,讓各類應用程式可以盡 情揮灑自己的色彩,連線遊戲,影音播放,再配上小巧的Camera,就像 是在手機上長一小眼睛,可以隨著你漫遊世界,即時分享給最好的朋友! 只是.. 這麼美好的使用者經驗,得來絕非容易,背後藏著不知多少人的努力。 手機開機的和旋鈴聲,日前成了我作夢都會夢到的可怕聲音 - 現在我整天 都要和許多手機為伍,想辦法讓Java和手機裡的作業系統、檔案系統、GPRS 連線、全彩螢幕、和旋鈴聲、小巧鍵盤等為這小小世界的和平奮戰,每一次 的努力後的挫敗,我都會聽到手機重新開機的鈴聲,那聲音聽來一點都不 美,也不管它是幾和旋,聽到後來我都沒有任何一點感覺,只有苦笑。要 怎麼形容呢?那種感覺就像以前寫程式,執行到一半,討人厭的藍色畫面一 出,都忍不住想大叫。雖然是自己的錯,還是怪東怪西,怪自己運氣太差、 怪今天天氣不好,直到結果順利跑出來為止。 不是要說自己多辛苦,其實自己只是螺絲釘一根,如果想一下你可以從一 家電信業者下載Game來玩。應該有 - 有一些團隊設計好玩的java Game,有些 人建置維護遊戲伺服器和網路暢通,很多人共同研發最小最強且高度整合 手機,很多公司提供不同手機軟體組件、很多IC設計公司員工日夜設計其 中的IC、一個工廠中的一條生產線不停生產,有群人創意無限行銷全世界.. 而你,正享受著美好的使用者經驗! 好消息告訴您:在下半年,應該會有更多更美也更強悍的Java彩色手機上市; 壞消息是在您心動的同時,荷包裡的麥克可能又少了一點,不過多一個可 供自己發揮創意的java舞台. 黃富鴻/Eric Esmertec AG, Switerland ehuang@esmertec.com --------------------------------------------------------------- 爪哇教室> JBuilder 專欄(三):使用者介面設計 (Borland 台灣分公司) 圖文並茂版請參考: http://www.javatwo.net/JavaPaper/jbuilder8_ui.pdf 透過 JBuilder 的視覺化設計工具,您可以快速又方便地為 Java 應用程式或 applet 設計使用者介面。利用元件盤所提供的元件,例如按鈕、文字方塊 、清單、對話盒、和選單等等,您就可以輕易地建構出美觀的使用者介面。 本章內容涵蓋下列主題: * JBuilder 元件介紹 * JBuilder的視覺化設計工具 JBuilder 元件介紹 在 JBuilder 的視覺化設計工具中,您可以將不同的程式區塊組合在一起, 成為各式各樣的應用程式。這些程式區塊就是所謂的元件(component)。 每個元件即代表一個程式單元,例如:使用者介面、資料庫或系統工具物件。 JBuilder 採用 JavaSoft 的 JavaBean 元件模型。JavaBean 規格為 Java 建立更好 的圖形導向開發環境。因此 Java 元件通常被稱為 Bean。 每一個 JBuilder 元件都具有不同的屬性、方法和事件: 屬性(property) 用來記錄元件目前的狀態資訊。您可以將「屬性」想像成具有 名稱的元件 屬性,例如 height 和 enable。使用者或程式可以取得或設定這些資訊。 方法(method) 在不同場合下,元件必須執行某些行為或動作 — 這些行為是被定義成 「方法」。您可以在程式碼中呼叫這些「方法」, 以完成特定動作。例如 repaint() 和 validate()。 事件(event) 「事件」就是傳遞給元件的訊息。透過這些訊息能夠將元件和某段程式碼 連結起來,使得程式能夠進一步與使用者產生互動,例如 actionPerformed 事件。 實際上某些元件所提供的屬性、方法和事件是繼承自父類別,這意味著它 們可以和其他元件分享這些元素。舉例來說,所有的 UI 元件都繼承一個名 為 background 的屬性,此屬性用來表示元件的背景顏色。每個元件也可以 定義自己的屬性、方法和事件。舉例來說,CheckBox 元件擁有一個 checkState 屬性,用來表示對話盒是否被勾選。JBuilder 的視覺化設計工具JBuilder 所提 供的視覺化設計工具能夠讓您以視覺化的方式來撰寫 Java 類別,並且允許您 產生新的複合元件或更複雜的元件。視覺化設計工具由元件盤、檢視器、設 計工具和元件樹所組合而成。若要存取設計工具,您必須在內容窗格上開啟 來源檔,然後點選 Design 標籤來載入設計工具。所有繼承自 java.awt.Container 的類別皆可以在設計工具中以視覺化的方式來設計。 設計區域 ------------- 「設計區域」可視為一個虛擬的工作區。您可以在上面直接新增或移除元件、 調整元件的大小與位置,以及更改任何您所希望的設定。當您選取「設計區域」 內任何一個視覺化元件,右側的檢視器將顯示此元件所包含的屬性與事件。 您可以在檢視器上編輯屬性,或是建立事件處理方法。 元件樹 ---------- 「元件樹」位於「結構窗格」中。它會以結構化方式呈現來源檔所包含的元件, 並展現元件之間的關聯性。 元件樹分成多個資料夾,每個資料夾分別對應到一個設計工具;啟動設計工具 的方式有下列幾種:* 在節點名稱上點選滑鼠右鍵,選取【Activate Designer】。 * 以滑鼠雙擊您欲開啟的節點名稱。 * 選取您欲開啟的節點名稱,按下 Enter 鍵。 檢視器 ---------- 「檢視器」位於「設計區域」的右側,可用來檢視和設定元件的屬性,或是建 立該元件所包含的事件。在「檢視器」進行任何的改變將會立即反應在您的 UI 設計介面以及原始程式碼。 元件盤 ---------- 「元件盤」位於「設計區域」的上方,包含視覺化與非視覺化元件。您可以 利用滑鼠將這些元件拖曳到「設計區域」或是「元件樹」。 內容窗格的三種設計工具 -------------------------------------- 在「內容窗格」中,Design 頁籤上方的「設計區域」是由下列三種設計工具所 共用:UI 設計工具、選單設計工具,以及欄位設計工具。 UI 設計工具 ----------------- 「UI 設計工具」用來建構您的視覺化元件。當您在「內容窗格」開啟檔案並點 選Design 頁籤時,JBuilder 將會顯示 UI 設計工具。所有的 UI 元件都會顯示於元 件樹的 UI 資料夾中。 選單設計工具 -------------------- 點選「結構窗格」的 Menu 資料夾將開啟「選單設計工具」,它可以協助您快速 開發選單元件,所有選單元件均置於元件樹的 Menu 資料夾。 欄位設計工具 -------------------- 點選「結構窗格」的 Data Access 資料夾將開啟「欄位設計工具」。您可以經由 視覺化方式處理「資料集元件」(data set component),例如程式欲存取的資料 欄位。所有「資料集元件」均存放在元件樹的 Data Access 資料夾。 值得注意的是,JBuilder 會自動維持視覺化工具和 Java 原始碼之間的同步。一但 您更改視覺化工具的任何內容,JBuilder 就會自動更新來源檔的程式碼。同理, 如果您改變來源檔的程式碼,JBuilder 也會自動更新視覺化工具中的內容。 --------------------------------------------------------------- 爪哇教室>用 Java 一步一步建造自己的聊天室軟體(第三話) (Yinyin) 圖文並茂版請至: http://www.javatwo.net/JavaPaper/java_chat_room.pdf 第貳話 轉動 / Drive Drive 我們將會把使用者介面上每個按鈕在按下去後所應作的動作大致的呈現出來。 這份文件將會簡單的介紹 Java 的事件系統,並提出為特定事件撰寫程式碼的方 法。 咖啡匙 --------- 2.0.0 視窗系統在收到使用者觸發滑鼠、鍵盤或其他的輸入裝置所發出的信號之後, 會將這些信號加以整理後傳給視窗系統認為應當接受這些事件的程式。以 Microsoft Windows 為例:他會將滑鼠事件傳給滑鼠所在的視窗,而鍵盤事件則會傳到現用的 視窗 (Actived Window)。當這些事件送到各視窗之後,這些視窗要怎麼處理就是自家 的事情。 2.0.1 Java AWT 也有一套自己的事件處理的方法。AWT 事件通常伴隨著使用者的輸入 而產生,移動滑鼠、敲擊滑鼠鍵或按下鍵盤上的按鈕都會產生事件。當滑鼠或鍵 盤事件被送到元件上之後,元件便作出相對應的動作:繪製新的外觀以呼應使用 者的輸入,或者也可以產生更高階的事件以供其他程式碼處理。 2.0.2 事實上,整個 Java 中不只是有 AWT 事件,某個系統屬性的改變也會產生事件, Java 中所有的事件類別都繼承自 java.util 套件中的 java.util.EventObject 這個類別, 而 AWT 事件則都繼承自 java.awt 這個套件中的 java.awt.AWTEvent 這個類別。當然 ,java.awt.AWTEvent 是繼承自 java.util.EventObject的。下面列出一些常處理的Java AWT 事件類別的繼承關係表: java.lang.Object java.util.EventObject java.awt.AWTEvent java.awt.event.ActionEvent java.awt.event.AdjustmentEvent java.awt.event.ComponentEvent java.awt.event.ContainerEvent java.awt.event.FocusEvent java.awt.event.InputEvent java.awt.event.KeyEvent java.awt.event.MouseEvent java.awt.event.WindowEvent java.awt.event.ItemEvent java.awt.event.TextEvent 2.0.3 沒錯,幾乎所有的 AWT 事件類別都是被封裝在 java.awt.event這個套件之下。 下表簡單的說明上面的繼承表中所提到的事件類別所代表的意義,您可以從 書本或是 Sun 提供的 Java 應用程式介面規格文件上取得更詳細的說明: java.lang.ObjectObject 類別是所有 Java 類別的最上層的類別。 java.util.EventObjectEventObject 類別是所有事件類別的最上層的類別。 java.awt.AWTEventAWTEvent 類別是所有 AWT 事件類別的最上層的類別。 其中定義了為數頗眾的遮罩常數 (Mask) 供java.awt.Component 在分配事件時使用。 java.awt.event.ActionEvent這是一個較高階的事件,當按鈕被按下、功能表 選項被選擇或是文字選單的選項被選取時由元件本身所產生並送出的。 java.awt.event.AdjustmentEvent這是一個較高階的事件,當捲軸被移動時會由捲軸 元件產生並送出。 java.awt.event.ComponentEvent這是一個較高階的事件,當元件的大小受到改變、 位置被變更、元件顯示出來是或是被隱藏時都會由元件產生並送出這個事件。 另外,其他以元件為發生基礎的事件類別都是繼承自這個類別。 java.awt.event.ContainerEvent這是一個較高階的事件,當有元件從 Container 中 被移出或新增進來時,由 Container 產生並送出。 java.awt.event.FocusEvent這是一個較高階的事件,當輸入焦點 (Foccus) 被轉移時,不論是得到或是失去焦點的元件都會產生並送出這個事件。 java.awt.event.InputEvent這是所有使用者輸入事件都繼承自這個類別。這是一個 很有意思的類別,其他所有的高階事件都是因此而起的。 java.awt.event.KeyEvent當鍵盤上有按鍵被按下或放開時,這個事件便由環境產生 ,並分派進視窗。另外,有任何的字元經輸入法被輸入時也會產生這個事件。 java.awt.event.MouseEvent當滑鼠上的滾輪被滾動或有按鍵被按下、放開或者滑鼠 被拖曳,這個事件便由環境產生,並分派進視窗。 java.awt.event.WindowEvent視窗被產生或是使用者請求關閉這個視窗時都會由視 窗產生這個事件。 java.awt.event.ItemEvent這是一個較高階的事件,當選取盒元件被勾選或是取消時 ,會由選取盒產生並送出這事件。 java.awt.event.TextEvent這是一個較高階的事件,當文件編輯元件正在被編輯的文 字內容被改變時,就會送出這事件。 2.0.4 每一個事件類別都會對應到一到多個的傾聽者介面,像:WindowEvent 對應到 WindowListener 而 MouseEvent 則對應到 MouseListener 和 MouseMotionListener。 2.0.5 要為某個 AWT 事件撰寫特定的處理程式碼,您必須撰寫一個類別來實作該事件所對應到的事件 傾聽者介面,然後產生一個撰寫好來處理事件的類別的物件,接著將這個處理事 件用的物件向產生欲處理之事件的元件註冊。 2.0.6 要怎麼撰寫處理事件的類別呢?下面是一些常用的事件類別和對應的傾聽者介面 所提供的方法: java.util. EventObject ObjectgetSource() 取得這個事件所作用的物件。 java.awt. AWTEvent static longACTION_EVENT_MASK static longADJUSTMENT_EVENT_MASK static longCOMPONENT_EVENT_MASK static longCONTAINER_EVENT_MASK static longFOCUS_EVENT_MASK static longINPUT_METHOD_EVENT_MASK static longITEM_EVENT_MASK static longKEY_EVENT_MASK static longMOUSE_EVENT_MASK static longMOUSE_MOTION_EVENT_MASK static longTEXT_EVENT_MASK static longWINDOW_EVENT_MASK 上面就是 AWTEvent 類別中所定義的遮罩常數。 intgetID() 取得事件代碼。每個 AWT 事件都有一個獨一無二的代號,Java 保留了所有小於 1999 的值作為內建的事件的代號,這個值被定義在AWTEvent.RESERVED_ID_MAX, 若需要設計自己的 AWT 事件,則應該選用大於這個數的值作為事件代號。 java.awt.event. ComponentEvent ComponentgetComponent() 取得產生這個事件的元件。 java.awt.event. InputEvent booleanisAltDown() 在發生這個事件的當時,鍵盤上的 Alt 鍵是否有被按下。 booleanisControlDown() 在發生這個事件的當時,鍵盤上的 Ctrl 鍵是否有被按下。 booleanisShiftDown() 在發生這個事件的當時,鍵盤上的 Shift 鍵是否有被按下。 java.awt.event. WindowEvent WindowgetWindow() 若這事件是由視窗本身發生的,如:使用者在視窗上按下關閉視窗的按鈕。 則這個方法會傳回發生這事件的視窗,否則傳回 null。 java.awt.event. ActionListener voidactionPerformed(ActionEvent e) 當持有這個傾聽者的元件被觸動時,這個方法會被持有這個傾聽者的元件呼叫。 java.awt.event. FocusListener voidfocusGained(FocusEvent e) 在註冊的元件取得輸入焦點時,這個方法會被呼叫。 voidfocusLost(FocusEvent e) 在註冊的元件失去輸入焦點時,這個方法會被呼叫。 java.awt.event. KeyListener voidkeyPressed(KeyEvent e) 若持有這個傾聽者的元件擁有焦點,當鍵盤上有按鍵被按下時,這個方法會被呼叫。 voidkeyReleased(KeyEvent e) 若持有這個傾聽者的元件擁有焦點,當鍵盤上有按鍵被鬆開時,這個方法會被呼叫。 voidkeyTyped(KeyEvent e) 若持有這個傾聽者的元件擁有焦點,當有字元從輸入法程式被送出時,這個方法會被 呼叫。 java.awt.event. MouseListener voidmouseClicked(MouseEvent e) 當滑鼠的任一鍵在持有這個傾聽者的元件上被點一下以上時,這個方法會被呼叫。 voidmouseEntered(MouseEvent e) 當滑鼠指標進入持有這個傾聽者的元件的範圍時,這個方法會被呼叫。 voidmouseExited(MouseEvent e) 當滑鼠指標離開持有這個傾聽者的元件的範圍時,這個方法會被呼叫。 voidmousePressed(MouseEvent e) 當滑鼠的任一鍵在持有這個傾聽者的元件上被按下去時,這個方法會被呼叫。 voidmouseReleased(MouseEvent e) 當滑鼠的任一鍵在持有這個傾聽者的元件上被鬆開時,這個方法會被呼叫。 java.awt.event. MouseMotionListener voidmouseDragged(MouseEvent e) 當滑鼠有任一件被按著在持有這個傾聽者的元件上被拖曳時,這個方法會被呼叫。 voidmouseMoved(MouseEvent e) 當滑鼠指標在持有這個傾聽者的元件的範圍內移動時,這個方法會被呼叫。 java.awt.event. WindowListener voidwindowActivated(WindowEvent e) 當持有這個傾聽者的視窗被使用者帶到最上層而變成現用視窗時,這個方法會 被呼叫。 voidwindowClosed(WindowEvent e) 當持有這個傾聽者的視窗被關閉後,這個方法會被呼叫。 voidwindowClosing(WindowEvent e) 當使用者透過系統選單或視窗的關閉視窗按鈕要求持有這個傾聽者的視窗關閉 時,這個方法會被呼叫。 voidwindowDeactivated(WindowEvent e) 當別的視窗被使用者帶到最上層變成現用視窗,而使得持有這個傾聽者的視窗 變成非現用視窗時,這個方法會被呼叫。 voidwindowDeiconified(WindowEvent e) 當持有這個傾聽者的視窗由最小化的圖示還原成視窗型式時,這個方法會被呼叫。 voidwindowIconified(WindowEvent e) 當持有這個傾聽者的視窗被最小化成圖示時,這個方法會被呼叫。 voidwindowOpened(WindowEvent e) 當持有這個傾聽者的視窗開啟後,這個方法會被呼叫。 2.0.7 那要如何將寫好的傾聽者類別物件指定予某個元件,以接收事件來處理呢?各元件 都會提供相關的方法以供呼叫,下面是幾個常用元件中這類方法的列表: java.awt. Button voidaddActionListener(ActionListener l) 讓給定的 ActionListener 物件 l 能夠收到發生在這個元件的事件。 voidremoveActionListener(ActionListener l) 將 ActionListener 物件 l 從本元件移除,這樣 l 就再也不會收到來自本元件的事件。 java.awt. Component voidaddComponentListener(ComponentListener l) 讓給定的 ComponentListener 物件 l 能夠收到發生在這個元件的事件。 voidremoveComponentListener(ComponentListener l) 將 ComponentListener 物件 l 從本元件移除,這樣 l 就再也不會收到來自本元件 的事件。 voidaddFocusListener(FocusListener l) 讓給定的 FocusListener 物件 l 能夠收到發生在這個元件的事件。 voidremoveFocusListener(FocusListener l) 將 FocusListener 物件 l 從本元件移除,這樣 l 就再也不會收到來自本元件的事 件。 voidaddKeyListener(KeyListener l) 讓給定的 KeyListener 物件 l 能夠收到發生在這個元件的鍵盤事件。 voidremoveKeyListener(KeyListener l) 將 KeyListener 物件 l 從本元件移除,這樣 l 就再也不會收到來自本元件的事件。 voidaddMouseListener(MouseListener l) 讓給定的 MouseListener 物件 l 能夠收到發生在這個元件的滑鼠事件。 voidremoveMouseListener(MouseListener l) 將 MouseListener 物件 l 從本元件移除,這樣 l 就再也不會收到來自本元件的事件。 voidaddMouseMotionListener(MouseMotionListener l) 讓給定的 MouseMotionListener 物件 l 能夠收到發生在這個元件的事件。 voidremoveMouseMotionListener(MouseMotionListener l) 將 MouseMotionListener 物件 l 從本元件移除,這樣 l 就再也不會收到來自本元 件的事件。 java.awt. Window voidaddWindowListener(WindowListener l) 讓給定的 WindowListener 物件 l 能夠收到發生在這個視窗的事件。 voidremoveWindowListener(WindowListener l) 將 WindowListener 物件 l 從本視窗移除,這樣 l 就再也不會收到來自本視窗的事件。 遊戲人間的微生物 --------------------------- 2.1.0 實作 Listener 時,您可以把他寫成一個完全獨立的類別,或者可以把他寫成嵌入 式類別 (Inner Class)。 2.1.1 什麼是嵌入式類別呢?簡單的說就是類別中還有類別,很奇怪吧!這可以說是 Java的特色之一。嵌入式類別還有一般的嵌入式類別和匿名的嵌入式類別。所謂 匿名嵌入式類別就是沒名字的嵌入式類別,在宣告類別時都需要幫要宣告的類 別取個名字,而嵌入式類別允許您不幫他取名字。常見的 C/C 也有這類東西。 當要定義的資料結構只會被用來宣告變數一次時,匿名的結構 (Struct) 或聯合 (Union) 可以減少程式設計師打的字,並降低名稱衝突的機會。 2.1.2 您可以把嵌入式類別寫在程式的任何地方,不過請注意,就如同變數一般,他必 須遵守變數可視範圍 (Scope) 的規定。也就是說,如果您把嵌入式類別宣告在方法 內,那麼其他的方法便看不到這個嵌入式類別;若宣告在迴圈中,迴圈外便看不 到這個嵌入式類別。而且,嵌入式類別可以存取外層類別的屬性或方法,不論該 方法是 private 還是 public,反之則不行。另外,靜態方法 (Static method) 不能存取 非靜態的內嵌式類別。而且,非靜態的內嵌式類別不能在其他類別中被使用。 //沒有實際的範例檔案 import java.lang.*; public class Outter { private int varA; //宣告 Inner Class class InnerZero { public void showA() { System.out.println("varA=" varA); //可以取用外層類別的變數或方法 } } public void methodA() { //宣告一個 Inner Class class InnerOne { /* 相關的程式碼 */ } //宣告並初始化一個 InnerOne 的物件實體 InnerOne inner=new InnerOne(); } public void methodB() { InnerZero innerZero=new InnerZero(); innerZero.showA(); InnerOne innerOne=new InnerOne(); //不行,看不到 InnerOne } public void methodC() { //非靜態方法可以存取靜態的內嵌式類別 InnerTwo innerTwo=new InnerTwo(); InnerThree innerThree=new InnerThree(); InnerFour innerFour=new InnerFour(); InnerFive innerFive=new InnerFive(); } //宣告靜態的 Inner Class public static class InnerTwo //在這個類別之外也可使用 { } protected static class InnerThree //繼承這個類別的類別也可使用 { } private static class InnerFour //只有這個類別可以使用 { } static class InnerFive //與這類別同套件的都可使用 { } public static void methodD() { //靜態方法也可以存取靜態的內嵌式類別 InnerTwo innerTwo=new InnerTwo(); InnerThree innerThree=new InnerThree(); InnerFour innerFour=new InnerFour(); InnerFive innerFive=new InnerFive(); //不過想存取非靜態的內嵌式類別就不行了 InnerZero innerZero=new InnerZero(); } } 2.1.3 下面將用上面介紹的三種方式來實際撰寫傾聽者類別。下面的程式是以上 一話的 FrameThree.java 為基礎,加入一個傾聽者,使得每次按鈕在被按之 後,會在按鈕上顯示被按的次數。下圖顯示了再按鈕元件被按過三次後整 個視窗所呈現的樣子: 2.1.4 首先將傾聽者寫成一個完全獨立的類別: //ActionListenerOne.java import java.awt.*; import java.awt.event.*; import java.lang.*; public class ActionListenerOne implements ActionListener { private int clickCount; //儲存目前這個 ActionListener 關聯到的 Button 已被按了幾次 public ActionListenerOne() { clickCount=0; //初始化計數器 } public void actionPerformed(ActionEvent e) { Object actsrc=e.getSource(); //取得事件來源 if( (actsrc instanceof Button) == true ) //檢查事件來源是不是一個 Button { //如果是的話... Button button=(Button)actsrc; //強制轉型成為 java.awt.Button clickCount ; button.setLabel("Clicked " String.valueOf(clickCount) //把 clickCount 轉成字串 " times" ); } } }這是用來測試上面的 ActionListener 用的程式碼: //ButtonOne.java import java.awt.*; import java.lang.*; public class ButtonOne { public static void main(String arg[]) { Frame frame=new Frame(); frame.setSize(300, 200); Button button=new Button(); ActionListenerOne listener=new ActionListenerOne(); button.addActionListener( listener ); //將傾聽者向 Button 類別的物件 button 註冊 frame.add(button); frame.setVisible(true); } } 2.1.5 若使用內嵌式類別的話,可以有兩種做法:宣告成靜態的內嵌式類別: //ButtonTwo.java import java.awt.*; import java.awt.event.*; import java.lang.*; public class Button
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-05-09 22:34:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!