版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第 四 章 Java應 用 程 序 的 基 本 框 架 學 習 一 門 新 語 言 最 好 是 先 看 幾 個 簡 單 的 程 序 例 子。 下 面 我 們 將 看 到 幾 個 非 常 基 本 的 程 序 例 子。 4.1 Java應 用 程 序 的 運 行 環(huán) 境Java應 用 程 序 是 指 可 以 獨 立 運 行 在Java虛 擬 機 上 的 程 序, 它 是 一 種 中 間 代 碼(byte-code?copy;。 比 如 你 的 應 用 程 序 叫my.java, 程 序 里 有 一 個 名 稱 為app1的 類, 用Javac或 其 它 編 譯 器, 編 譯 后 將 會 生 成ap
2、p1.class, 則 在 命 令 行 狀 態(tài) 下 輸 入:java app1就 可 以 運 行 此 程 序。 注 意, 用java 命 令 運 行 的 類 必 須 有main函 數, 否 則 不 能 執(zhí) 行。 與 普 通java應 用 程 序 不 同 的 另 一 種 另 一 種Java程 序 叫Java Applet。 我 們 把 它 譯 成Java小 程 序, 這 種 程 序 后 綴 也 是.class, 但 它 不 能 直 接 在java虛 擬 機 上 運 行, 也 就 是 輸 入java *.class不 能 運 行, 這 種 程 序 里 可 以 沒 有main函 數, 它 必 須 由
3、 某 個 瀏 覽 器 來 運 行, 比 如Appletviewer或 Netscape2.02以 上 等。 這 種 程 序 我 們 將 在 后 面 章 節(jié) 中 介 紹。 4.2 最 簡 單 的Java程 序 解 釋 讓 我 們 來 看 一 看 最 簡 單 的Java應 用 程 序 例 子, 來 理 解 一 下 它 的 結 構: Filename:1.java class myfirst public static void main(String args ) System.out,println ("This is my first Java Application");
4、 這 就 是 一 個 完 整 的 Java 應 用 程 序, 將 它 編 譯: Javac 1.java 在 當 前 目 錄 下, 它 將 生 成myfirst.class 文 件, Java myfirst 屏 幕 上 將 會 輸 出:This is my first Java Application 讓 我 們 來 一 步 一 步 分 析 每 句 話 含 義 (1?copy; class myfirst 這 一 行 用 關 鍵 詞class來 定 義 名 為myfirst的 新 類,myfirst是 新 類 的 名 稱, 必 須 是 一 個 有 效 的 標 識 符, 有 效 標 識 符 定
5、 義 請 見 程 序 設 計 基礎章 節(jié)。 類 的 說 明 包 括 數 據 說 明 和 成 員 函 數 說 明, 都 放 在 類 后 面 的 大 括 號 里 面。 一 般 類 定 義 如 下: class 類 名 稱 數 據 定 義; 函 數 定 義; ( 2 )public static void main (String args ) public是 一 個 表 示 訪 問 權 限 的 關 鍵 字, 表 示 此 成 員 函 數 是 公 有 的, 可 以 被 其 他 類 直 接 調 用, 包 括java解 釋 器。 相 對 應 的 關 鍵 字 有private和protected,frien
6、d。private表 示 只 能 被 本 類 訪 問,protected表 示 只 能 被 子 類 訪 問,friend是 缺 省 的 訪 問 權 限, 表 示 能 被 本 包(package)中 任 意 類 訪 問, 對 其 它 包 中 的 類 是 不 可 訪 問 的。 static 表 示main 成 員 函 數 在myfirst類 的 所 有 對 象 中 是 唯 一 的, 因 此 如 果 本 程 序 生 成 另 一 個myfirst類 對 象, 調 用 的 main 函 數 將 是 同 一 個 函 數。 void 表 示 main 函 數 沒 有 返 回 值, 如 果 有 返 回 類 型
7、 值, 則 可 加 上interger 或boolean 諸 如 此 類, 對 于 有 返 回 值 的 函 數, 其 函 數 實 體 的 最 后 應 加 上return語 句。 main 這 個 函 數 是 這 運 行 應 用 程 序 的 入 口 點, 因 此 編 寫 應 用 程 序 是 必 須 有main( )函 數, 且 是 唯 一 的。 (3?copy; System.out.println 一 句 這 一 句 是main函 數 里 的 功 能 語 句, 是 調 用Java里 System 包 里 的out 類 的println成 員 函 數, 是 標 準 輸 入 輸 出。 4.3 Ja
8、va應 用 程 序 參 數 的 傳 遞Java語 言 很 類 似C和C+語 言。 在C語 言 里, 通 過 在 命 令 行 輸 入 參 數,C程 序 可 由main函 數 讀 入 這 ?copy; 參 數,java程 序 也 一 樣, 請 看 下 面 程 序: Filename:2.java class My2 public static void main (String args ) int arc = args.length; if (arc>0) for (int i =0;i ) m = new Memo(args0); else m = new Memo(); m.start
9、(); 將Frame聯 系 起 來 l 熟 悉 的 函 數 paint()和mouseDown(), 看 起 來 有 點 眼 熟。 這 ?copy; 函 數 與applet的 函 數 一 樣。 實 際 上, 一 個frame 包 含 各 種GUI組 件 與applet的 形 式 一 樣。 另 一 個 熟 悉 的 函 數 是start()。 這 個 函 數 并 不 必 要, 因 為 我 們 沒 有 覆 蓋 任 何 已 存 在 的 函 數。 但 你 想 繼 承applet編 程 的 風 格, 你 還 是 可 以 使 用start(),stop(),init()與destroy()等 函 數。 l
10、新 函 數 我 們 熟 悉 的 函 數start()調 用 了show()。show()函 數 是Window類 的 繼 承, 它 顯 示Fame及 其 所 有 組 件。 在mouseDown()函 數 里 我 們 看 到 兩 個 函 數:hide()和dispose()。hide()只 簡 單 地 使Frame不 可 見。 你 可 以 在 任 何 時 候 調 用 它 來 隱 藏 窗 口。 dispose()函 數 釋 放 由Frame占 有 的 系 統(tǒng) 資 源。 只 有 在 你 不 需 要Frame時 才 調 用 它。 l 構 造 函 數 Memo例 子 還 包 含 了 一 個 新 函 數M
11、emo()。 其 實 這 個 類 有 兩 個Memo()函 數! 任 何 與 類 名 相 同 的 函 數 都 是 構 造 函 數。 它 在 創(chuàng) 建 一 個 新 對 象 時 被 調 用。 你 可 以 認 為 它 是 一 個 對 象 的init()初 始 化 函 數。 為 什 么 需 要 兩 個 構 造 函 數 呢? 有 了 兩 個 構 造 函 數, 我 們 可 以 利 用 多 態(tài) 性 的 優(yōu) 點, 有 兩 種 方 法 創(chuàng) 建 一 個 新Memo對 象。 我 們 可 以 簡 單 的 創(chuàng) 建 使 用 缺 省 信 息 的Memo對 象: m = new Memo(); 或 者, 我 們 可 以 自 己
12、 提 ?copy; 信 息: m = new Memo("Our message"); Frame控 制 本 程 序 的 最 后 功 能 是 在main()里 建 立 并 顯 示frame。 它 由 以 下 兩 步 實 現: /Step 1 m = new Memo(); /Step 2 m.start(); 第 一 步 初 始 化memo對 象。 我 們 象 操 作 其 它 對 象 一 樣 操 作m。 為 顯 示frame, 我 們 需 要 調 用 show()。 這 在 第 二 步 里 實 現。 另 一 個 要 注 意 的 是 程 序 的健 壯 性: 我 們 基 本 的
13、frame里 沒 有 包 含 處 理 標 準 WINDOW_DESTROY消 息 的 函 數。 這 樣, 你 將 不 能 在 窗 口 的 控 制 菜 單 里 選 中"Quit"或"Exit"。 為 了 增 加 這 個 功 能, 你 需 要 增 加 以 下 的 處 理 程 序: public boolean handleEvent (Event e) if (e.id = Event.WINDOW_DESTROY) dispose(); System.exit(1); return true; else /Go ahead and do what we n
14、ormally would have done return super.handleEvent(e); 菜 單 圖 形 界 面 依 靠 菜 單 來 指 導 用 戶 操 作。 設 計 獨 立 的Java應 用 程 序 時,Java提 ?copy; 創(chuàng) 建 和 使 用 菜 單 的 直 接 方 法。 象 其 它 組 件 一 樣,new將 創(chuàng) 建 一 個 菜 單: Menu optionMenu; optionsMenu = new Menu("Options"); 菜 單 項 一 ?copy; 你 創(chuàng) 建 了 一 個 菜 單, 你 可 以 使 用add()來 組 建 菜 單 項
15、: optionsMenu.add(new MenuItem("Option1");optionsMenu.add(new MenuItem("Option2"); 菜 單 事 件 當 你 選 中 某 個 菜 單 項 時, 你 創(chuàng) 建 此 菜 單 項 的 字 符 ?reg; 將 在 事 件 中 返 回。 你 可 以 象 測 試 按 鈕 選 擇 一 樣 測 試 菜 單 選 擇: public boolean action (Event e, Object arg) . if (e.target instanceof MenuItem) System.out
16、.println(String) arg); . 其 它 菜 單 項 除 了 上 面 描 述 的 簡 單 菜 單 項 外, 你 還 可 增 加CheckBox菜 單 項, 分 割 線, 以 及 子 菜 單。 下 面 是 一 ?copy; 例 子: Menu m,n; m = new Menu("Examples"); m.add(new MenuItem("Basic"); m.add(new MenuItem("Simple"); /add a separator m.add(new MenuItem("-");
17、 /add a Checkbox item m.add(new CheckboxMenuItem("Check"); /add a submenu n = new Menu("More Examples");n.add(new MenuItem("Sub Basic"); n.add(new MenuItem("Sub Simple"); m.add(n); 菜 單 條 你 創(chuàng) 建 好 菜 單 后, 你 應 將 ?reg; 放 在 應 用 程 序 的 菜 單 條 上: mb = new Menubar(); mb.
18、add(m); mb.add(optionsMenu); 然 后 你 可 為applet設 置 菜 單 條: setMenuBar(mb); 4.5 獨 立 應 用 程 序 例 子 為 了 看 一 個 更 復 雜 的 獨 立 的 圖 形 界 面 應 用 程 序, 下 面 有 一 個 數 字 轉 換 的 例 子: import java.awt.*; public class d2x extends Frame int decimalValue= 0; String baseXValue = new String ("0"); TextField dDisplay,xDisp
19、lay; /d2x constructor public d2x() super("Decimal Converter");/set the title of the frame MenuBar mb = new MenuBar(); Button d2Binary = new Button("Binary"); Button d2Octal = new Button("Octal"); Button d2Hex = new Button("Hex"); Button d2Base36 = new Button(&
20、quot;Base36"); Panel p1 = new Panel(); Panel p2 = new Panel(); Panel p3 = new Panel(); /add a simple menu Menu m = new Menu("Application"); m.add(new CheckboxMenuItem("Base 36 Active"); m.add(new MenuItem("Exit"); /add menu to menubar mb.add(m); setMenuBar(mb);/ins
21、tall this menu bar in the frame /Add buttons to their own panel p3.setLayout(new FlowLayout(); p3.add(d2Binary); p3.add(d2Octal); p3.add(d2Hex); p3.add(d2Base36); /Add text fields Label dLabel = new Label("Enter Deecimal: "); Label xLabel = new Label("Converted Value: "); dDispla
22、y = new TextField(integer.toString(decimalValue),7);xDisplay = new TextField(baseXValue,32); xDisplay.setEditable(false);p1.setLayout(new FlowLayout(FlowLayout.LEFT); p2.setLayout(new FlowLayout(FlowLayout.LEFT); p1.add(dLabel); p1.add(dDisplay); p2.add(xLabel); p2.add(xDisplay); /Add the panels add
23、("North",p1); add("Center",p2); add("South",p3); /end d2x constructor public void start() resize(400,150); show(); public void updateXDisplay() xDisplay.setText(baseXValue); public boolean handleEvent(Event evt) if (evt.targt intanceof MenuItem) if ("Exit".equ
24、als(MenuItem)evt.target).getLabel() hide(); dispose(); System.exit(0); return false; retrun true; else if (evt.target instanceof Button) String whick = (Button)evt.target).getLabel(); if (whick.equals("Binary") decimalValue = Integer.parseInt(dDisplay.getText(); baseXValue = Interger.toString(decimalValue,2); if (whick.equals("Octal") decimalValue = Integer.pa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省長沙市鐵路第一中學2025屆物理高一上期末檢測模擬試題含解析
- 2025屆山東省濱州市鄒平雙語學校三區(qū)物理高一上期末綜合測試模擬試題含解析
- 2025屆安徽省毫州市第二中學高三物理第一學期期末教學質量檢測試題含解析
- 2025屆安徽省廬巢七校聯盟物理高三上期末質量檢測模擬試題含解析
- 舟山市重點中學2025屆高一物理第一學期期中調研試題含解析
- 2025屆亳州市重點中學物理高一上期中統(tǒng)考試題含解析
- 新疆昌吉州行知學校2025屆高三上物理期中達標測試試題含解析
- 2025屆四川省瀘州瀘縣第五中學物理高二第一學期期末教學質量檢測試題含解析
- 齊魯名校教科研協作體山東、湖北部分重點中學2025屆物理高一上期末考試模擬試題含解析
- 2025屆江蘇省南京六合區(qū)程橋高中物理高三上期末質量跟蹤監(jiān)視模擬試題含解析
- 2024年黑龍江省藥品監(jiān)督管理局直屬事業(yè)單位招聘筆試沖刺題
- 2024年福建福州天宇電氣股份有限公司招聘筆試參考題庫含答案解析
- 網上訂餐管理系統(tǒng)課件
- 癌癥化療病人心理護理課件
- 金鏟鏟之戰(zhàn)教程
- 刺梨果汁飲料和刺梨濃縮果汁
- 社交媒體營銷策略研究
- 實體店培訓計劃書
- 急性心肌梗死小講課
- 廣州市小學數學學科第二屆青年教師解題比賽初賽試題(答案)
- Unit3ConservationWritingWorkshop課件-高中英語北師大版選擇性
評論
0/150
提交評論