




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 四 章 Java應(yīng) 用 程 序 的 基 本 框 架 學(xué) 習(xí) 一 門 新 語(yǔ) 言 最 好 是 先 看 幾 個(gè) 簡(jiǎn) 單 的 程 序 例 子。 下 面 我 們 將 看 到 幾 個(gè) 非 常 基 本 的 程 序 例 子。 4.1 Java應(yīng) 用 程 序 的 運(yùn) 行 環(huán) 境Java應(yīng) 用 程 序 是 指 可 以 獨(dú) 立 運(yùn) 行 在Java虛 擬 機(jī) 上 的 程 序, 它 是 一 種 中 間 代 碼(byte-code?copy;。 比 如 你 的 應(yīng) 用 程 序 叫my.java, 程 序 里 有 一 個(gè) 名 稱 為app1的 類, 用Javac或 其 它 編 譯 器, 編 譯 后 將 會(huì) 生 成ap
2、p1.class, 則 在 命 令 行 狀 態(tài) 下 輸 入:java app1就 可 以 運(yùn) 行 此 程 序。 注 意, 用java 命 令 運(yùn) 行 的 類 必 須 有main函 數(shù), 否 則 不 能 執(zhí) 行。 與 普 通java應(yīng) 用 程 序 不 同 的 另 一 種 另 一 種Java程 序 叫Java Applet。 我 們 把 它 譯 成Java小 程 序, 這 種 程 序 后 綴 也 是.class, 但 它 不 能 直 接 在java虛 擬 機(jī) 上 運(yùn) 行, 也 就 是 輸 入java *.class不 能 運(yùn) 行, 這 種 程 序 里 可 以 沒(méi) 有main函 數(shù), 它 必 須 由
3、 某 個(gè) 瀏 覽 器 來(lái) 運(yùn) 行, 比 如Appletviewer或 Netscape2.02以 上 等。 這 種 程 序 我 們 將 在 后 面 章 節(jié) 中 介 紹。 4.2 最 簡(jiǎn) 單 的Java程 序 解 釋 讓 我 們 來(lái) 看 一 看 最 簡(jiǎn) 單 的Java應(yīng) 用 程 序 例 子, 來(lái) 理 解 一 下 它 的 結(jié) 構(gòu): Filename:1.java class myfirst public static void main(String args ) System.out,println ("This is my first Java Application");
4、 這 就 是 一 個(gè) 完 整 的 Java 應(yīng) 用 程 序, 將 它 編 譯: Javac 1.java 在 當(dāng) 前 目 錄 下, 它 將 生 成myfirst.class 文 件, Java myfirst 屏 幕 上 將 會(huì) 輸 出:This is my first Java Application 讓 我 們 來(lái) 一 步 一 步 分 析 每 句 話 含 義 (1?copy; class myfirst 這 一 行 用 關(guān) 鍵 詞class來(lái) 定 義 名 為myfirst的 新 類,myfirst是 新 類 的 名 稱, 必 須 是 一 個(gè) 有 效 的 標(biāo) 識(shí) 符, 有 效 標(biāo) 識(shí) 符 定
5、 義 請(qǐng) 見 程 序 設(shè) 計(jì) 基礎(chǔ)章 節(jié)。 類 的 說(shuō) 明 包 括 數(shù) 據(jù) 說(shuō) 明 和 成 員 函 數(shù) 說(shuō) 明, 都 放 在 類 后 面 的 大 括 號(hào) 里 面。 一 般 類 定 義 如 下: class 類 名 稱 數(shù) 據(jù) 定 義; 函 數(shù) 定 義; ( 2 )public static void main (String args ) public是 一 個(gè) 表 示 訪 問(wèn) 權(quán) 限 的 關(guān) 鍵 字, 表 示 此 成 員 函 數(shù) 是 公 有 的, 可 以 被 其 他 類 直 接 調(diào) 用, 包 括java解 釋 器。 相 對(duì) 應(yīng) 的 關(guān) 鍵 字 有private和protected,frien
6、d。private表 示 只 能 被 本 類 訪 問(wèn),protected表 示 只 能 被 子 類 訪 問(wèn),friend是 缺 省 的 訪 問(wèn) 權(quán) 限, 表 示 能 被 本 包(package)中 任 意 類 訪 問(wèn), 對(duì) 其 它 包 中 的 類 是 不 可 訪 問(wèn) 的。 static 表 示main 成 員 函 數(shù) 在myfirst類 的 所 有 對(duì) 象 中 是 唯 一 的, 因 此 如 果 本 程 序 生 成 另 一 個(gè)myfirst類 對(duì) 象, 調(diào) 用 的 main 函 數(shù) 將 是 同 一 個(gè) 函 數(shù)。 void 表 示 main 函 數(shù) 沒(méi) 有 返 回 值, 如 果 有 返 回 類 型
7、 值, 則 可 加 上interger 或boolean 諸 如 此 類, 對(duì) 于 有 返 回 值 的 函 數(shù), 其 函 數(shù) 實(shí) 體 的 最 后 應(yīng) 加 上return語(yǔ) 句。 main 這 個(gè) 函 數(shù) 是 這 運(yùn) 行 應(yīng) 用 程 序 的 入 口 點(diǎn), 因 此 編 寫 應(yīng) 用 程 序 是 必 須 有main( )函 數(shù), 且 是 唯 一 的。 (3?copy; System.out.println 一 句 這 一 句 是main函 數(shù) 里 的 功 能 語(yǔ) 句, 是 調(diào) 用Java里 System 包 里 的out 類 的println成 員 函 數(shù), 是 標(biāo) 準(zhǔn) 輸 入 輸 出。 4.3 Ja
8、va應(yīng) 用 程 序 參 數(shù) 的 傳 遞Java語(yǔ) 言 很 類 似C和C+語(yǔ) 言。 在C語(yǔ) 言 里, 通 過(guò) 在 命 令 行 輸 入 參 數(shù),C程 序 可 由main函 數(shù) 讀 入 這 ?copy; 參 數(shù),java程 序 也 一 樣, 請(qǐng) 看 下 面 程 序: 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聯(lián) 系 起 來(lái) l 熟 悉 的 函 數(shù) paint()和mouseDown(), 看 起 來(lái) 有 點(diǎn) 眼 熟。 這 ?copy; 函 數(shù) 與applet的 函 數(shù) 一 樣。 實(shí) 際 上, 一 個(gè)frame 包 含 各 種GUI組 件 與applet的 形 式 一 樣。 另 一 個(gè) 熟 悉 的 函 數(shù) 是start()。 這 個(gè) 函 數(shù) 并 不 必 要, 因 為 我 們 沒(méi) 有 覆 蓋 任 何 已 存 在 的 函 數(shù)。 但 你 想 繼 承applet編 程 的 風(fēng) 格, 你 還 是 可 以 使 用start(),stop(),init()與destroy()等 函 數(shù)。 l
10、新 函 數(shù) 我 們 熟 悉 的 函 數(shù)start()調(diào) 用 了show()。show()函 數(shù) 是Window類 的 繼 承, 它 顯 示Fame及 其 所 有 組 件。 在mouseDown()函 數(shù) 里 我 們 看 到 兩 個(gè) 函 數(shù):hide()和dispose()。hide()只 簡(jiǎn) 單 地 使Frame不 可 見。 你 可 以 在 任 何 時(shí) 候 調(diào) 用 它 來(lái) 隱 藏 窗 口。 dispose()函 數(shù) 釋 放 由Frame占 有 的 系 統(tǒng) 資 源。 只 有 在 你 不 需 要Frame時(shí) 才 調(diào) 用 它。 l 構(gòu) 造 函 數(shù) Memo例 子 還 包 含 了 一 個(gè) 新 函 數(shù)M
11、emo()。 其 實(shí) 這 個(gè) 類 有 兩 個(gè)Memo()函 數(shù)! 任 何 與 類 名 相 同 的 函 數(shù) 都 是 構(gòu) 造 函 數(shù)。 它 在 創(chuàng) 建 一 個(gè) 新 對(duì) 象 時(shí) 被 調(diào) 用。 你 可 以 認(rèn) 為 它 是 一 個(gè) 對(duì) 象 的init()初 始 化 函 數(shù)。 為 什 么 需 要 兩 個(gè) 構(gòu) 造 函 數(shù) 呢? 有 了 兩 個(gè) 構(gòu) 造 函 數(shù), 我 們 可 以 利 用 多 態(tài) 性 的 優(yōu) 點(diǎn), 有 兩 種 方 法 創(chuàng) 建 一 個(gè) 新Memo對(duì) 象。 我 們 可 以 簡(jiǎn) 單 的 創(chuàng) 建 使 用 缺 省 信 息 的Memo對(duì) 象: m = new Memo(); 或 者, 我 們 可 以 自 己
12、 提 ?copy; 信 息: m = new Memo("Our message"); Frame控 制 本 程 序 的 最 后 功 能 是 在main()里 建 立 并 顯 示frame。 它 由 以 下 兩 步 實(shí) 現(xiàn): /Step 1 m = new Memo(); /Step 2 m.start(); 第 一 步 初 始 化memo對(duì) 象。 我 們 象 操 作 其 它 對(duì) 象 一 樣 操 作m。 為 顯 示frame, 我 們 需 要 調(diào) 用 show()。 這 在 第 二 步 里 實(shí) 現(xiàn)。 另 一 個(gè) 要 注 意 的 是 程 序 的健 壯 性: 我 們 基 本 的
13、frame里 沒(méi) 有 包 含 處 理 標(biāo) 準(zhǔn) WINDOW_DESTROY消 息 的 函 數(shù)。 這 樣, 你 將 不 能 在 窗 口 的 控 制 菜 單 里 選 中"Quit"或"Exit"。 為 了 增 加 這 個(gè) 功 能, 你 需 要 增 加 以 下 的 處 理 程 序: 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); 菜 單 圖 形 界 面 依 靠 菜 單 來(lái) 指 導(dǎo) 用 戶 操 作。 設(shè) 計(jì) 獨(dú) 立 的Java應(yīng) 用 程 序 時(shí),Java提 ?copy; 創(chuàng) 建 和 使 用 菜 單 的 直 接 方 法。 象 其 它 組 件 一 樣,new將 創(chuàng) 建 一 個(gè) 菜 單: Menu optionMenu; optionsMenu = new Menu("Options"); 菜 單 項(xiàng) 一 ?copy; 你 創(chuàng) 建 了 一 個(gè) 菜 單, 你 可 以 使 用add()來(lái) 組 建 菜 單 項(xiàng)
15、: optionsMenu.add(new MenuItem("Option1");optionsMenu.add(new MenuItem("Option2"); 菜 單 事 件 當(dāng) 你 選 中 某 個(gè) 菜 單 項(xiàng) 時(shí), 你 創(chuàng) 建 此 菜 單 項(xiàng) 的 字 符 ?reg; 將 在 事 件 中 返 回。 你 可 以 象 測(cè) 試 按 鈕 選 擇 一 樣 測(cè) 試 菜 單 選 擇: public boolean action (Event e, Object arg) . if (e.target instanceof MenuItem) System.out
16、.println(String) arg); . 其 它 菜 單 項(xiàng) 除 了 上 面 描 述 的 簡(jiǎn) 單 菜 單 項(xiàng) 外, 你 還 可 增 加CheckBox菜 單 項(xiàng), 分 割 線, 以 及 子 菜 單。 下 面 是 一 ?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) 建 好 菜 單 后, 你 應(yīng) 將 ?reg; 放 在 應(yīng) 用 程 序 的 菜 單 條 上: mb = new Menubar(); mb.
18、add(m); mb.add(optionsMenu); 然 后 你 可 為applet設(shè) 置 菜 單 條: setMenuBar(mb); 4.5 獨(dú) 立 應(yīng) 用 程 序 例 子 為 了 看 一 個(gè) 更 復(fù) 雜 的 獨(dú) 立 的 圖 形 界 面 應(yīng) 用 程 序, 下 面 有 一 個(gè) 數(shù) 字 轉(zhuǎn) 換 的 例 子: 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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TR 21734-3:2024 EN Intelligent transport systems - Performance testing for connectivity and safety functions of automated driving buses in public transport - Part 3: Ser
- 【正版授權(quán)】 ISO 20553:2025 EN Radiation protection - Monitoring of workers occupationally exposed to a risk of internal contamination with radioactive material
- 2025年度拆遷安置房預(yù)售合同范本(2025版)
- 2025年生物科技產(chǎn)品采購(gòu)合同范本模板
- 2025年度餐廳窗口承包及廣告投放合同
- 2025年度二手商鋪貸款買賣雙方合作協(xié)議
- 2025年度海洋工程擔(dān)保型買賣合同
- 2025年低噪聲對(duì)旋式局部通風(fēng)機(jī)項(xiàng)目建議書
- 保安工作在社區(qū)安全提升中的實(shí)例計(jì)劃
- 促進(jìn)社區(qū)志愿服務(wù)團(tuán)隊(duì)建設(shè)的方案計(jì)劃
- 路橋工程檢測(cè)技術(shù) 課件 1公路工程試驗(yàn)檢測(cè)管理
- NB/T 11459-2023煤礦井下直流電法勘探規(guī)程
- 2025高中物理《課時(shí)作業(yè)》人教版選擇性必修第1冊(cè)課時(shí)分層作業(yè)(八)
- 腦卒中-腦卒中的康復(fù)治療
- 十七個(gè)崗位安全操作規(guī)程手冊(cè)
- 爆花(2023年陜西中考語(yǔ)文試卷記敘文閱讀題及答案)
- 疫情統(tǒng)計(jì)學(xué)智慧樹知到答案2024年浙江大學(xué)
- 自主簽到培訓(xùn)課件-早安!幼兒園
- 小學(xué)項(xiàng)目化學(xué)習(xí)案例
- 2024住院患者靜脈血栓栓塞癥預(yù)防護(hù)理與管理專家共識(shí)要點(diǎn)(全文)
- 2024-2030年中國(guó)大宗商品行業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與投資前景研究報(bào)告
評(píng)論
0/150
提交評(píng)論