Microsoft Word - 投影片ch19

Similar documents
Microsoft Word - 投影片ch18

Swing-02.pdf

Microsoft Word - 投影片ch20

JavaIO.PDF


Microsoft Word - 投影片ch14

PowerPoint 簡報

Microsoft PowerPoint - ch02

java2d-4.PDF

Microsoft Word - 投影片ch11

Microsoft Word - 投影片ch13

Microsoft PowerPoint - 18_Event.pptx

Microsoft Word - 投影片ch23

Microsoft Word - 投影片ch15

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

投影片 1

chp6.ppt

Microsoft Word - 投影片ch22

Microsoft Word - 投影片ch17

[Short Essay:] 1. (5 points) Use state-of-memory diagram to describe the differences between x and y declared as follows: double[] x = new double[4];

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Microsoft PowerPoint ppt

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

Microsoft Word - GUI design.doc

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

Chapter 9: Objects and Classes

Microsoft PowerPoint - VB14.ppt

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

CHAPTER VC#

chp11.ppt

EJB-Programming-4-cn.doc

The golden pins of the PCI card can be oxidized after months or years

Microsoft Word - 正文.doc

javaexample-02.pdf

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

Microsoft Word - Java程序设计全文_终_.doc

Microsoft Word - Broker.doc

Microsoft Word - 投影片ch12

專題報告交版.doc

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

Microsoft Word - 第3章.doc

Chapter 9: Objects and Classes

新・解きながら学ぶJava

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc)

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

ContextMenu

The Embedded computing platform



視窗程式設計

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

全国计算机技术与软件专业技术资格(水平)考试

Microsoft Word - 01.DOC

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Chapter 16 集合

Learning Java

epub 94-3

Microsoft PowerPoint - ch6 [相容模式]

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1




運算子多載 Operator Overloading

Microsoft PowerPoint - 14Threads.ppt

建模与图形思考

ebook 86-15

投影片 1

chp8.ppt

2009年9月全国计算机等级考试二级Java真题及答案

投影片 1

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Transcription:

Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十九章 AWT 的其它物件 本章學習目標學習選擇表單與下拉選單學習功能表的製作學習捲軸的製作學習各種對話方塊與其相關應用

AWT 的其它物件 19-2 19.1 選擇表單 選擇表單 (list) 可用來一次顯示多個選項 19.1.1 用 List 類別建立選擇表單 下表列出了 List 類別的建構元與常用的 method: 表 19.1.1 java.awt.list 的建構元與 method 建構元 List() List(int rows) List(int rows, boolean multiplemode) 主要功能 建立選擇表單物件, 預設的顯示列數為 4 列 建立可顯示 rows 列的表單物件 建立可顯示 rows 列的表單物件, 並指定單選或複選 method void add(string item) void add(string item, int index) 主要功能 加入一個選項到選擇表單中 加入一個選項到選擇表單中的 index 位罝

AWT 的其它物件 19-3 method void addactionlistener(actionlistener l) void additemlistener(itemlistener l) void deselect(int index) String getitem(int index) int getitemcount() String[] getitems() int getrows() int getselectedindex() int[] getselectedindexes() String getselecteditem() String[] getselecteditems() int getvisibleindex() 主要功能 將傾聽者加入選擇表單 將傾聽者加入選擇表單裡特定的項目 取消選擇表單裡第 index 項的選取 取得選擇表單裡的第 index 項目 取得選擇表單裡選項的數目 取得選擇表單裡選項的所有項目, 並以字串陣列的形式傳回 取得可顯示的列數 傳回被選取項目的 index 值 若未有項目被選取, 或者是多個項目被選取, 則傳回 -1 以整數陣列的型式傳回所有被選取項目的 index 值 若沒有項目被選取, 則傳回長度為 0 的陣列 傳回被選取項目的名稱 取得所有被選取項目的名稱, 並以字串陣列的格式傳回 取得由 makevisible() method 所設定的項目

AWT 的其它物件 19-4 method boolean isindexselected(int index) boolean ismultiplemode() void makevisible(int index) void remove(int position) void remove(string item) void removeall() void replaceitem(string str, int index) void select(int index) void setmultiplemode(boolean b) 主要功能查詢第 index 個選項是否為被選取的狀態查詢選擇表單是否為複選設定第 index 個選項顯示在選擇表單裡移去位置為 position 的項目移去名稱為 item 的項目移去所有的 item 的項目將位置為 index 的項目用 str 來取代設定第 index 項為被選取的狀態設定選擇表單是否允許複選

AWT 的其它物件 19-5 app19_1 是建立選擇表單的簡單範例 01 // app19_1, 建立選擇表單 02 import java.awt.*; 03 public class app19_1 extends Frame 04 { 05 static app19_1 frm=new app19_1(); 06 static List lst=new List(); // 建立選擇表單物件 lst 07 public static void main(string args[]) 08 { 09 frm.setlayout(new FlowLayout(FlowLayout.CENTER,10,25)); 10 frm.settitle("list class"); 11 for(int i=0;i<=9;i++) // 利用 for 迴圈加入選項 12 lst.add("list Item "+i); 13 lst.select(2); // 選取索引值為 2 的選項 14 frm.setsize(200,150); 15 frm.add(lst); 16 frm.setbackground(color.yellow); 17 frm.setvisible(true); 18 System.out.println("lst.getRows()= "+lst.getrows()); 19 System.out.println("lst.getItemCount()= "+lst.getitemcount()); 20 } 21 }

AWT 的其它物件 19-6 /* app19_1 OUTPUT---- lst.getrows()= 4 lst.getitemcount()= 10 ----------------------*/

AWT 的其它物件 19-7 19.1.2 選擇表單的事件處理 當選取選擇表單內的選項時,ItemEvent 事件會被觸發 app19_2 是選擇表單的事件處理範例 01 // app19_2, 選擇表單的事件處理範例 02 import java.awt.*; 03 import java.awt.event.*; 04 public class app19_2 extends Frame implements ItemListener 05 { 06 static app19_2 frm=new app19_2(); 07 static List lst=new List(); // 建立選擇表單物件 lst 08 public static void main(string args[]) 09 { 10 frm.setlayout(new FlowLayout(FlowLayout.CENTER,10,25)); 11 frm.settitle("select a color"); 12 lst.add("yellow"); // 加入選項到 lst 內 13 lst.add("orange"); 14 lst.add("pink"); 15 lst.add("cyan"); 16 lst.additemlistener(frm); // 設定 frm 為 lst 的傾聽者 17 frm.add(lst);

AWT 的其它物件 19-8 18 frm.setsize(200,150); 19 frm.setvisible(true); 20 } 21 public void itemstatechanged(itemevent e) // 事件處理的程式碼 22 { 23 String color=lst.getselecteditem(); // 取得被選取之選項名稱 24 if(color=="yellow") // 如果選項名稱為 yellow 25 frm.setbackground(color.yellow); 26 else if(color=="orange") // 如果選項名稱為 orange 27 frm.setbackground(color.orange); 28 else if(color=="pink") // 如果選項名稱為 pink 29 frm.setbackground(color.pink); 30 else if(color=="cyan") // 如果選項名稱為 cyan 31 frm.setbackground(color.cyan); 32 frm.settitle("you select "+color); // 設定視窗 frm 的標題 33 } 34 }

AWT 的其它物件 19-9 19.2 下拉選單 下拉選單只能選擇單一的項目, 不能複選 : 下拉選單 按下選單旁的按鈕可選擇其它的項目

AWT 的其它物件 19-10 19.2.1 用 Choice 類別建立下拉選單 下表列出了 Choice 類別的建構元與常用的 method: 表 19.2.1 建構元 Choice() java.awt.choice 的建構元與 method 主要功能 建立下拉選單物件 method void add(string item) void additemlistener(itemlistener l) String getitem(int index) int getitemcount() int getselectedindex() String getselecteditem() void insert(string item, int index) void remove(int position) 主要功能加入 item 到選單中加入事件傾聽者取出第 index 項目的名稱傳回下拉選單中選項的總數傳回下拉選單中, 被選取項目的 index 值傳回下拉選單中, 被選取項目的名稱在 index 的位置加下 item 選項移除 position 位置的選項

AWT 的其它物件 19-11 method void remove(string item) void removeall() void select(int pos) void select(string str) 主要功能移除名稱為 item 的選項移除所有的項目設定 pos 位置的項目為被選取的狀態設定名稱為 str 的項目為被選取的狀態

AWT 的其它物件 19-12 範例 app19_3 是以 Choice 下拉選單來顯示選項 : 01 // app19_3, 建立選擇表單 02 import java.awt.*; 03 public class app19_3 extends Frame 04 { 05 static app19_3 frm=new app19_3(); 06 static Choice chc=new Choice(); // 建立下拉選單物件 chc 07 public static void main(string args[]) 08 { 09 frm.setlayout(new FlowLayout(FlowLayout.CENTER,10,10)); 10 frm.settitle("choice class"); 11 for(int i=0;i<=4;i++) // 利用 for 迴圈加入選項 12 chc.add("choice Item "+i); 13 frm.add(chc); 14 frm.setsize(200,150); 15 frm.setbackground(color.yellow); 16 frm.setvisible(true); 17 } 18 }

AWT 的其它物件 19-13 19.2.2 下拉選單的事件處理 選取下拉選單內的選項時會觸發 ItemEvent 事件 app19_4 是下拉選單的事件處理範例 01 // app19_4, 下拉選單的事件處理範例 02 import java.awt.*; 03 import java.awt.event.*; 04 class app19_4 extends Frame implements ItemListener 05 { 06 static app19_4 frm=new app19_4(); 07 static Choice chc=new Choice(); // 建立下拉表單物件 chc 08 public static void main(string args[]) 09 { 10 BorderLayout br=new BorderLayout(); 11 frm.setlayout(br); 12 frm.settitle("select a color"); 13 chc.add("yellow"); // 加入選項到下拉表單物件 chc 裡 14 chc.add("orange"); 15 chc.add("pink"); 16 chc.add("cyan"); 17 chc.additemlistener(frm); // 設定 frm 為 chc 的事件傾聽者

18 frm.setsize(200,150); 19 frm.add(chc,br.north); 20 frm.setvisible(true); 21 } 22 public void itemstatechanged(itemevent e) 23 { 24 String color=chc.getselecteditem(); 25 if(color=="yellow") // 選擇了 yellow 選項 26 frm.setbackground(color.yellow); 27 else if(color=="orange") // 選擇了 orange 選項 28 frm.setbackground(color.orange); 29 else if(color=="pink") // 選擇了 pink 選項 30 frm.setbackground(color.pink); 31 else if(color=="cyan") // 選擇了 cyan 選項 32 frm.setbackground(color.cyan); 33 frm.settitle("you select "+color); 34 } 35 } AWT 的其它物件 19-14

AWT 的其它物件 19-15 19.3 功能表 功能表是由三種功能表類別所建立 : MenuBar Menu MenuItem 下圖說明了這三種類別所建立之物件於功能表裡所扮演的角色 : Menu 物件 MenuBar 物件 MenuItem 物件

AWT 的其它物件 19-16 MenuItem 與 MenuBar 均是繼承自 MenuComponent 類別 Menu 則是繼承了 MenuItem 類別, 其繼承的關係如下圖所示 : java.lang.object java.awt.menucomponent java.awt.menubar java.awt.menuitem java.awt.menu

AWT 的其它物件 19-17 下表列出了這三個功能表類別裡的一些建構子與 method: 表 19.3.1 建構元 MenuBar() java.awt.menubar 的建構元與 method 主要功能 建立 MenuBar 物件 method Menu add(menu m) Menu getmenu(int i) int getmenucount() void remove(int index) void remove(menucomponent m) 主要功能將 Menu 物件 m 加到 MenuBar 中取得指定位置的 Menu 物件取得 MenuBar 中 Menu 物件的總數移除指定位置的 Menu 物件移除 MenuComponent 物件 m

AWT 的其它物件 19-18 表 19.3.2 java.awt.menu 的建構元與 method 建構元 Menu() Menu(String label) 主要功能 建立 Menu 物件 建立標題為 label 的 Menu 物件 method MenuItem add(menuitem mi) void add(string label) void addseparator() MenuItem getitem(int index) int getitemcount() void insert(menuitem mi, int index) void insert(string label, int index) void insertseparator(int index) void remove(int index) void removeall() 主要功能增加 MenuItem 物件 mi 到 Menu 中增加標題為 label 的 Menu 物件到 Menu 中在目前的位置增加一行分隔線傳回指定位置的 MenuItem 物件傳回目前的 Menu 物件裡,MenuItme 的總數在 index 位置插入 MenuItem 物件 mi 在 index 位置增加標題為 label 的 Menu 物件在 index 位置增加一行分隔線移除 index 位置的 MenuItem 物件移除 Menu 中所有的 MenuItem 物件

AWT 的其它物件 19-19 表 19.3.3 java.awt.menuitem 的建構元與 method 建構元 MenuItem() MenuItem(String label) 主要功能 建立 MenuItem 物件 建立標題為 label 的 MenuItem 物件 method void addactionlistener(actionlistener l) String getlabel() boolean isenabled() void setenabled(boolean b) void setlabel(string label) 主要功能加入傾聽者物件取得 MenuItem 的標題查詢 MenuItem 是否可以使用設定 MenuItem 可以使用設定 MenuItem 的標題為 label

AWT 的其它物件 19-20 19.3.1 建立功能表 app19_5 是建立功能表的範例 : 01 // app19_5, 建立功能表 02 import java.awt.*; 03 public class app19_5 04 { 05 static Frame frm=new Frame("Menu Demo"); 06 static MenuBar mb=new MenuBar(); // 建立 MenuBar 物件 07 static Menu menu1=new Menu("Color"); 08 static Menu menu2=new Menu("Exit"); 建立 Menu 物件 09 static MenuItem mi1=new MenuItem("Yellow"); 10 static MenuItem mi2=new MenuItem("Orange"); 建立 MenuItem 11 static MenuItem mi3=new MenuItem("Pink"); 物件 12 static MenuItem mi4=new MenuItem("Close window"); 13 14 public static void main(string args[]) 15 { 16 mb.add(menu1); // 將 menu1 加入 mb 中 17 mb.add(menu2); // 將 menu2 加入 mb 中 18 menu1.add(mi1); // 將 mi1 加入 menu1 中 19 menu1.add(mi2); // 將 mi2 加入 menu1 中

AWT 的其它物件 19-21 20 menu1.add(mi3); // 將 mi3 加入 menu1 中 21 menu2.add(mi4); // 將 mi4 加入 menu2 中 22 frm.setmenubar(mb); // 設定 frm 的功能表為 mb 23 frm.setsize(200,150); 24 frm.setvisible(true); 25 } 26 } 下圖為執行本例時, 選取 Exit 功能表裡 Close window 選項的情形 :

AWT 的其它物件 19-22 19.3.2 功能表的事件處理 選擇了 MenuItem 類別的物件時便觸發了 ActionEvent 事件 ActionEvent 事件的處理方法可撰寫在 actionperformed() 裡 app19_6 是處理功能表事件的範例 01 // app19_6, 功能表的事件處理範例 02 import java.awt.*; 03 import java.awt.event.*; 04 public class app19_6 extends Frame implements ActionListener 05 { 06 static app19_6 frm=new app19_6(); 07 static Label lab=new Label("Hello Java",Label.CENTER); 08 static MenuBar mb=new MenuBar(); // 建立 MenuBar 物件 09 static Menu menu1=new Menu("Style"); 10 static Menu menu2=new Menu("Exit"); 建立 Menu 物件 11 static MenuItem mi1=new MenuItem("Plane"); 12 static MenuItem mi2=new MenuItem("Bold"); 建立 MenuItem 13 static MenuItem mi3=new MenuItem("Italic"); 物件

AWT 的其它物件 19-23 14 static MenuItem mi4=new MenuItem("Close window"); 15 public static void main(string args[]) 16 { 17 frm.settitle("menu Demo"); 18 mb.add(menu1); 19 mb.add(menu2); 20 menu1.add(mi1); 21 menu1.add(mi2); 22 menu1.add(mi3); 23 menu2.add(mi4); 24 mi1.addactionlistener(frm); // 設定 frm 為 mi1 的事件傾聽者 25 mi2.addactionlistener(frm); // 設定 frm 為 mi2 的事件傾聽者 26 mi3.addactionlistener(frm); // 設定 frm 為 mi3 的事件傾聽者 27 mi4.addactionlistener(frm); // 設定 frm 為 mi4 的事件傾聽者 28 lab.setfont(new Font("Dialog",Font.PLAIN,24)); 29 frm.add(lab); 30 frm.setsize(280,150); 31 frm.setmenubar(mb); 32 frm.setvisible(true); 33 } 34 public void actionperformed(actionevent e) // 事件處理的程式碼 35 { 36 MenuItem mi=(menuitem) e.getsource(); // 取得觸發事件的物件

AWT 的其它物件 19-24 37 if(mi==mi1) // mi1 觸發事件 38 lab.setfont(new Font("Dialog",Font.PLAIN,24)); 39 else if(mi==mi2) // mi2 觸發事件 40 lab.setfont(new Font("Dialog",Font.BOLD,24)); 41 else if(mi==mi3) // mi3 觸發事件 42 lab.setfont(new Font("Dialog",Font.ITALIC,24)); 43 else if(mi==mi4) // mi4 觸發事件 44 frm.dispose(); // 關閉視窗 45 } 46 }

AWT 的其它物件 19-25 19.4 捲軸 Scrollbar 類別可用來處理捲軸相關的功能, 下表列出了 Scrollbar 類別常用的建構元與 method: 表 19.4.1 建構元 java.awt.scrollbar 的建構元與 method 主要功能 Scrollbar() Scrollbar(int orientation) Scrollbar(int orientation, int value, int visible, int minimum, int maximum) 建立垂直方向的捲軸 建立捲軸, 並指定方向 建立捲軸, 並指定方向 初始值 捲軸盒的可視大小 捲軸的最小與最大值 method void addadjustmentlistener(adjustmentlistener l) int getmaximum() int getminimum() int getorientation() 主要功能加入 AdjustmentEvent 事件傾聽者取得捲軸的最大值取得捲軸的最小值取得捲軸的方向

AWT 的其它物件 19-26 method int getvalue() int getvisibleamount() void setmaximum(int newmaximum) void setminimum(int newminimum) void setorientation(int orientation) void setvalue(int newvalue) void setvalues(int value, int visible, int minimum, int maximum) void setvisibleamount(int newamount) 主要功能 取得目前捲軸的數值 取得捲軸盒的可視大小 設定捲軸的最大值 設定捲軸的最小值 設定捲軸的方向 設定目前捲軸的數值 設定捲軸的數值 捲軸盒的可視大小 捲軸的最小值與最大值 設定捲軸盒的可視大小

AWT 的其它物件 19-27 下圖中設定捲軸的最小值為 20, 最大值為 180, 因捲軸盒的大小佔掉了 40, 所以這個捲軸只能傳回 20~140 之間的數值 捲軸的最小值 捲軸盒 20 60 180 捲軸的最大值 捲軸盒的可視大小 = 40

AWT 的其它物件 19-28 app19_7 是捲軸的實例應用 01 // app19_7, 捲軸的實例應用 02 import java.awt.*; 03 import java.awt.event.*; 04 public class app19_7 extends Frame implements AdjustmentListener 05 { 06 static app19_7 frm=new app19_7(); 07 static Scrollbar scr=new Scrollbar(); // 建立垂直捲軸 scr 08 static Label lab1=new Label("Silence is golden.",label.center); 09 static Label lab2=new Label("size=20",Label.CENTER); 10 11 public static void main(string args[]) 12 { 13 BorderLayout br=new BorderLayout(5,5); 14 frm.settitle("scrollbar Demo"); 15 frm.setsize(300,150); 16 scr.addadjustmentlistener(frm); // 以 frm 當成 scr 的傾聽者 17 scr.setvalues(20,4,12,40); // 設定 scr 的相關數值 18 frm.add(scr,br.east); 19 frm.add(lab1,br.center); 20 frm.add(lab2,br.south); 21 lab1.setfont(new Font("Dialog",Font.PLAIN,20));

AWT 的其它物件 19-29 22 lab2.setbackground(color.orange); 23 frm.setvisible(true); 24 } 25 public void adjustmentvaluechanged(adjustmentevent e) 26 { 27 int size=scr.getvalue(); // 取得 scr 的數值 28 lab1.setfont(new Font("Dialog",Font.PLAIN,size)); // 設定字型樣式 29 lab2.settext("size="+size); // 顯示字體大小 30 } 31 }

AWT 的其它物件 19-30 19.5 對話方塊 對話方塊 (dialog box) 可用來處理一些簡單的訊息 Dialog 類別可以建立對話方塊 對話方塊沒有最大化和最小化鈕 下面為 Dialog 類別的繼承圖 : java.lang.object MenuComponent MenuBar MenuItem Menu Container Window Frame Component Label Panel Dialog............

AWT 的其它物件 19-31 下表列出了 Dialog 類別常用的建構元和 method: 表 19.5.1 java.awt.dialog 的建構元與 method 建構元 Dialog(Dialog owner) Dialog(Dialog owner, String title) Dialog(Dialog owner, String title, boolean modal) Dialog(Frame owner) Dialog(Frame owner, boolean modal) Dialog(Frame owner, String title) Dialog(Frame owner, String title, boolean modal) 主要功能 建立主控對話方塊, 指定其擁有者為另一對話方塊 同上, 並加上標題 建立對話方塊, 指定其擁有者為另一對話方塊, 並可設定 modal 來指定是否要主控 建立主控對話方塊, 指定其擁有者為一視窗 同上, 但可設定 modal 來指定是否要主控 建立主控對話方塊, 指定其擁有者為一視窗, 並可設定標題 建立對話方塊, 指定其擁有者為一視窗, 設定標題, 並可設定 modal 來指定是否要主控

AWT 的其它物件 19-32 method void dispose() String gettitle() void hide() boolean ismodal() boolean isresizable() void setmodal(boolean b) void setresizable(boolean resizable) void settitle(string title) void show() 主要功能銷毀對話方塊物件取得對話方塊的標題隱藏對話方塊測試對話方塊是否為主控測試對話方塊是否可改變大小設定對話方塊為主控設定對話方塊是否可以改變大小設定對話方塊的標題顯示對話方塊 對話方塊必須指定其擁有者 (owner)

AWT 的其它物件 19-33 有兩點必須注意 : (1) 對話方塊有 主控 與 非主控 之分 (2) 對話方塊要呼叫 show() method 才能顯示它 如果要隱藏, 可用 hide() method

AWT 的其它物件 19-34 app19_8 是對話方塊的使用範例 按下 視窗關閉鈕 出現對話方塊 按 Cancel 則回到原視窗 按 Close 則關閉原視窗 01 // app19_8, 對話方塊的實例應用 02 import java.awt.*; 03 import java.awt.event.*; 04 public class app19_8 extends Frame implements ActionListener 05 { 06 static app19_8 frm=new app19_8(); 07 static Dialog dlg=new Dialog(frm); // 建立 Dialog 物件 dlg 08 static Button Close_btn=new Button("Close"); // Close 按鈕 09 static Button Cancel_btn=new Button("Cancel"); // Cancel 按鈕 10 static WinLis wlis=new WinLis(); // 建立傾聽者物件 wlis

AWT 的其它物件 19-35 11 12 public static void main(string args[]) 13 { 14 frm.settitle("dialog Demo"); 15 frm.setsize(200,150); 16 dlg.settitle("are you sure?"); // 設定對話方塊的標題 17 dlg.setsize(140,100); // 設定對話方塊的大小 18 dlg.setlayout(new FlowLayout(FlowLayout.CENTER,5,30)); 19 dlg.add(close_btn); // 將 Close_btn 加入對話方塊中 20 dlg.add(cancel_btn); // 將 Cancel_btn 加入對話方塊中 21 Cancel_btn.addActionListener(frm); // 設定 Cancel_btn 的傾聽者 22 Close_btn.addActionListener(frm); // 設定 Close_btn 的傾聽者 23 frm.addwindowlistener(wlis); // 設定 frm 的傾聽者 24 frm.setvisible(true); 25 } 26 27 static class WinLis extends WindowAdapter 28 { 29 public void windowclosing(windowevent e) // 按下視窗關閉鈕時 30 { 31 dlg.setlocation(80,30); // 設定對話方塊的位置 32 dlg.show(); // 顯示對話方塊 33 }

AWT 的其它物件 19-36 34 } 35 36 public void actionperformed(actionevent e)// 按下對話方塊上的按鈕時 37 { 38 Button btn=(button) e.getsource(); // 取得被按下的按鈕 39 if(btn==close_btn) // 如果是 Close 按鈕被按下 40 { 41 dlg.dispose(); // 關閉對話方塊 42 frm.dispose(); // 關閉視窗 43 } 44 else if (btn==cancel_btn) // 如果是 Cancel 按鈕被按下 45 dlg.hide(); // 隱藏對話方塊 46 } 47 }

AWT 的其它物件 19-37 19.6 檔案對話方塊 檔案對話方塊 (file dialog) 專門用來處理檔案存取等相關事務 FileDialog 類別可以建立檔案對話方塊, 它繼承自 Dialog 類別 : java.lang.object MenuComponent MenuBar MenuItem Menu Container Window Frame Component Label Panel Dialog FileDialog............

AWT 的其它物件 19-38 下表列出了 FileDialog 常用的建構元與 method: 表 19.6.1 資料成員 static int LOAD static int SAVE java.awt.dialog 的建構元與 method 主要功能 檔案對話方塊為讀取檔案用檔案對話方塊為寫入檔案用 建構元 FileDialog(Frame parent) FileDialog(Frame parent, String title) FileDialog(Frame parent, String title, int mode) 主要功能 建立讀取用的檔案對話方塊 建立讀取用的檔案對話方塊, 並建立標題 建立檔案對話方塊, 建立標題, 並可指定是寫入或讀取用, 若 mode 為 LOAD, 則為讀取用, 若為 SAVE, 則為儲存用 method String getdirectory() String getfile() 主要功能 取得檔案對話方塊內所選取的目錄 取得檔案對話方塊內所選取的檔案名稱

AWT 的其它物件 19-39 method int getmode() void setdirectory(string dir) void setfile(string file) void setmode(int mode) 主要功能取得檔案對話方塊的模式為 LOAD 或 SAVE 設定檔案對話方塊的預設開啟目錄設定檔案對話方塊的預設開啟檔案設定檔案對話方塊的模式

AWT 的其它物件 19-40 app19_8 是使用 FileDialog 類別的範例, 其執行流程如下 : (2) 選取檔案所在的目錄 (1) 按下 Open 按鈕, 開啟檔案對話方塊 (3) 選取檔案 (4) 按下開啟鈕 (5) TextArea 物件會顯示出所選擇檔案 (train.txt) 的內容

AWT 的其它物件 19-41 01 // app19_9, FileDialog 類別的使用 02 import java.awt.*; 03 import java.awt.event.*; 04 import java.io.*; 05 public class app19_9 extends Frame implements ActionListener 06 { 07 static app19_9 frm=new app19_9(); 08 static FileDialog fdlg=new FileDialog(frm,"Open"); // 建立 fdlg 物件 09 static Button btn=new Button("Open"); 10 static TextArea txa=new TextArea(); 11 12 public static void main(string args[]) 13 { 14 BorderLayout br=new BorderLayout(); 15 frm.settitle("dialog Demo"); 16 frm.setlayout(br); 17 frm.setsize(200,150); 18 frm.add(txa,br.center); 19 frm.add(btn,br.south); 20 btn.addactionlistener(frm); // 設定 frm 為 btn 的事件傾聽者 21 frm.setvisible(true); 22 } 23 // 當 Open 按鈕按下時, 執行下列的程式碼

AWT 的其它物件 19-42 24 public void actionperformed(actionevent e) 25 { 26 fdlg.setvisible(true); // 顯示檔案對話方塊 27 // 以下的程式碼是按下檔案對話方塊內的 開啟 鈕之後, 才會執行 28 String fname=fdlg.getdirectory()+fdlg.getfile();// 取得路徑與名稱 29 try 30 { 31 FileInputStream fi=new FileInputStream(fname); 32 byte ba[]=new byte[fi.available()]; 33 fi.read(ba); // 讀入檔案內容到 byte 陣列裡 34 txa.settext(new String(ba)); // 將 byte 陣列內容寫到 txa 物件裡 35 fi.close(); 36 } 37 catch(ioexception ioe){}; 38 } 39 }

AWT 的其它物件 19-43