程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java Applet 入門 第三天

Java Applet 入門 第三天

編輯:關於JAVA

Java的圖形界面與設計 
    圖形用戶界面(Graphics User Interface),簡稱GUI,使用圖形的方式,借助菜單、按鈕等標准界面元素和鼠標操作,幫助用戶方便地向計算機系統發出指令,啟動操作,並將系統運行的結果同樣以圖形方式顯示給用戶。圖形用戶界面畫面生動、操作簡單,省去了字符界面用戶必須記憶各種命令的麻煩,深受廣大用戶喜愛和歡迎,已經成為目前幾乎所有應用軟件的既成標准。所以學習設計和開發圖形用戶界面,是應用軟件開發人員必修的一課。 
 Java中構成用戶界面的各種元素和成分可以粗略地分成為三類:容器、控制組件和用戶自定義成分。 
1.容器 
     容器是用來組織其他界面成分和元素的單元。一般說來一個應用程序的圖形用戶界面首先對應於一個復雜的容器,如一個窗口。這個容器內部將包含許多界面成分和元素,這寫界面元素本身也可以又是一個容器,這個容器將再進一步包含它的界面成分和元素,依次類推就構成一個復雜的圖形界面系統。 
容器的主要作用和特點有: 
(1)容器有一定的范圍。一般容器都是矩形的,容器范圍邊界可以用邊框框出來,有些則沒有可見的標記。 
(2)容器有一定的位置。這個位置可以是屏幕四角的絕對位置,也可以是相對於其他容器邊框的相對位置。 
(3)容器通常都有一個背景,這個背景覆蓋全部容器,可以通明,也可以指定一幅特殊的圖案,使界面生動化和個性化. 
(4)容器中可以包含其他的許多界面成分和元素。當容器被打開顯示時,它上面的所以成分和元素也同時顯示出來,當容器被關閉和隱藏時,它所包含的成分和元素也一起被隱藏。 
(5)容器可以按一定的規則來物理地安排它所包含的元素,如這些元素的相對位置關系、它們的的前後排列關系等。 
(6)容器可能被包含在其他容器之中。 
2.控制組件 
    與容器不同,控制組件是圖形用戶界面的最小單位之一,它裡面不再包含其他的成分.控制組件的作用是完成與用戶的一次交互,包括接受用戶的一個命令,接受用戶的一個文本輸入,向用戶顯示一段文本或一個圖形等。從某種程度上來說,控制組件是圖形用戶界面標准化的結果,目前常用的控制組件有: 
(1)復選框(Checkbox) 
(2)單選按鈕(CheckboxGroup或RadioButton) 
(3)下拉列表(List或Choice) 
(4)標簽(Label) 
(5)文本編輯區(Edit或TextfIEld,TextArea) 
(6)按鈕(Button) 
3.用戶自定義成分 
    除了標准的圖形界面元素,編程人員還可以根據用戶需要設計一些用戶自定義的圖形界面成分,例如繪制一些幾何圖形,使用標志圖案等。用戶自定義成分由於不能像標准界面元素一樣被系統識別和承認,所以通常只能起到裝飾、美化等作用,而不能響應用戶的動作,不具有交互功能。 
1.復選框(Checkbox) 
例子: 

上面的例子是怎樣用Java實現的呢? 
它的語法如下: 
import Java.awt .*; 
import Java.applet .*; 
import Java.awt.event.* ; 

public class FuXuan extends Applet  
 implements ItemListener 

 public void init() 
 { 
 Checkbox one=new Checkbox("貓"); 
 Checkbox two= new Checkbox("狗",true);  
 Checkbox three=new Checkbox("兔",false); 
 one.addItemListener(this);  
 add(one); 
 two.addItemListener(this);  
 add(two); 
 three.addItemListener(this); 
 add(three); 
 } 
 public void itemStateChanged(ItemEvent e) 
 { 
 } 


分析:  
第3行:調入處理包,以處理復選框的事件 
第4行:implements是加入事件的接口,用implements來調用接口,這個接口函數是ItemListener;  
第8行:調用函數Checkbox建立第1個選項,默認狀態為假,即沒有事先選中。  
第9行:建立一個事先已經默認為正確的選項。  
第12,14,16行:當用戶點擊復選框使其狀態發生變化時就會引發ItemEvent類代表的選擇事件。這個復選框已經把自身注冊給ItemEvent事件的監聽者ItemListener.系統會自動調用這個 ItemListener中的public void itemStateChanged(ItemEvent e)方法來響應復選框的狀態改變。實際的實現了ItemListener接口的監聽者。這個方法的方法體通常包括這樣的語句:調用選擇事件的方法e.getSelectable()獲得印發選擇事件的事件源對象引用,再調用e.getState()獲取選擇事件之後的狀態。也可以直接利用事件事件原對象自身的方法操作,不過要注意的是getSelectable()方法的返回值是實現了Selectable接口的對象,需要把它強制轉化成真正的事件原對象類型。例如: ((Checkbox)e.Selectable).getState():與e.getState效果是一致的。  
第13,15,17行:將one、two、three三個復選框加入到面板中去,以使起能夠在屏幕上顯示出來。 

2.單選按鈕(CheckboxGroup)  




    上面的例子是怎樣用Java實現的呢? 
它的語法如下: 
import Java.awt .*; 
import Java.applet .*; 
import Java.awt.event .*; 

public class DanXuan extends Applet implements ItemListener 

 public void init() 
 { 
 CheckboxGroup cbg=new CheckboxGroup(); 
    Checkbox one=new Checkbox("正確",false,cbg); 
    Checkbox two=new Checkbox("不正確",false,cbg); 
    Checkbox three=new Checkbox("我也不知道",true,cbg); 
    one.addItemListener(this); 
    two.addItemListener(this); 
    three.addItemListener(this); 
    add(one); 
    add(two); 
    add(three); 
 } 
 public void itemStateChanged(ItemEvent e) 
 { 
 } 


分析: 
第9行: 先建立一個新表單f,f的名稱為checkbox Group  
第10行:調用函數 CheckboxGroup 建立一個新的單選按鈕組cbg  
第11行:調用函數Checkbox建立第1個選項,名稱為"one",默認狀態為假,即沒有事先選中。  
第12行:建立一個事先已經默認為正確的選項,名稱為“three”。  
第13,14,15行:當用戶點擊復選框使其狀態發生變化時就會引發ItemEvent類代表的選擇事件。這個單選框已經把自身注冊給ItemEvent事件的監聽者ItemListener.系統會自動調用這個 ItemListener中的public void itemStateChanged(ItemEvent e)方法來響應單選框的狀態改變。實際的實現了ItemListener接口的監聽者。調用 CheckboxGroup的getSelectbox()方法可以獲得用戶選擇了哪個按鈕,這個方法返回用戶選中的Checkbox對象,再調用該對象的方法getLabel()就知道用戶選擇了什麼樣的信息。同樣,通過調用 CheckboxGroup的setSelectCheckbox()方法,可以在程序中指定單選按鈕組中的哪個按鈕。例如下面的語句說明選擇為不知道: cbd.setSelectedCheckbox(three);另外也可以直接使用按鈕組中的Checkbox單選按鈕的方法,例如直接調用:one.getState(); 就可以知道這個按鈕被選中了,那麼其他按鈕一定處於未選中狀態。  
第16,17,18行:將one、two、three三個標簽加入到容器f中去,以使起能夠在屏幕上顯示出來。  
第20行則是事件處理函數了!專門用來處理單選項改變的效果!這兒沒有加入代碼。所以它不能處理任何事件。  

3.下拉列表(Choice)和列表(List) 
1.下拉列表: 


    上面的例子是怎樣用Java實現的呢? 
它的語法如下: 
import Java.awt .*; 
import Java.applet .*; 
import Java.awt.event .*; 

public class LIEbiao1 extends Applet implements ItemListener 

 public void init() 
 { 
  Choice c= new Choice(); 
  c.add ("-----初始選項------"); 
  c.add ("第一選項"); 
  c.add ("第二選項"); 
  c.add ("第三選項"); 
  c.add ("第四選項"); 
  c.addItemListener(this); 
  add(c); 
 } 
 public void itemStateChanged(ItemEvent e) 
 { 
 } 


分析: 

第8行:調用函數 Choice 建立一個新的下拉列表 c  
第9行:調用c.add建立第1個選項,名稱為"----初始選項----",這是 
默認狀態,即屏幕上什麼也沒有選時的選項。它的序號是0 
第10行:建立第2個選項,名稱為“第一選項”實際上它已經是第2個 
選項,這屬於一點小小的技巧問題。它的序號是1。這相信大家可以 
更好地理解。

第15行:當用戶點擊選擇項時,使其狀態發生變化,就會引發ItemEvent 
類代表的選擇事件。ItemEvent事件的監聽者ItemListener會自動調用 
這個方法來響應下拉列表的狀態改變。getSelectedIndex()方法 
將獲得被選中的選項的序號,getSelectedItem()方法將獲得被選中選項 
的標簽文本字符串。select(int index)方法和select( String item)方 
法使程序選中指定序號或文本內容的選項。下拉列表可以產生ItemEvent 
代表的選擇事件,如果把選項注冊給實現借口ItemListener 的監聽者: 
c.addItemListener().則當用戶單擊下拉列表的某個選項時,系統自動產 
生一個ItemEvent類的對象包含這個事件的有關信息。 

第16行:將下拉列表 c 加入到容器f中去,以使起能夠在屏幕上顯示出來。


2.列表:(可以多選) 
  

    上面的例子是怎樣用Java實現的呢? 
它的語法如下: 
1.…………//與前面的例子相同 
2. List year=new List(4,true);  
3. year.add("1998");  
4. year.add("1999");  
5. year.add("2000");  
6. year.add("2001");  
7. add(year); 
8.…………//與前面的例子相同 
分析: 
第2行:調用函數 List 建立一個新的多選項列表 year.它有4個選項, 
true表示此表可以多選。當為false時,它就只能單選。  
第3行:調用year.add建立第1個選項,名稱為"1998",它的序號是0 
第4行:建立第2個選項,名稱為“1999”。它的序號是1。 

第8行:將下拉列表 c 加入到容器f中去,以使起能夠在屏幕上顯示出來。 
如果想或知用戶選擇了列表中的哪個選項,可以調用List對象的: 
getSelectedItems()方法,該方法返回一個 String類型的數組,裡面的 
每個元素是一個被用戶選中的選擇項,所有的元素就包括了所有被用戶選 
擇的選項。這個方法返回用戶選中的選擇項。列表可以有多選和單選。所 
以List對象還有一個方法geetSelectItem()方法,與單選不同。這個方法 
返回單個的字符串。  
除了可以返回用戶選中的標簽字符串,還可以獲得被選中選項的序號。在 
List裡面,getSelectIndex()方法將返回被選中的選項和序號。 
getSelectIndexs()方法將獲得被選中選項的序號組成的整型數組。  

4.標 簽標簽,就是用戶只能查看,不能修改的文本顯示區域,它能起到信息說明的作用,每個標簽用一個Label類的對象表示。請看例子:例子:上面的例子是怎樣用Java實現的呢?它的語法如下:……//與前面的例子一樣!1. Label prompt1=new Label("這是標簽 1 !");2. Label prompt2=new Label ("這是標簽 2 !");3. add(prompt1);4. add(prompt2);……//與前面的例子一樣! 分析: 
第1行:調用函數 Label 建立第 1 個標簽 prompt1;  
第2行:調用函數 Label 建立第 2 個標簽 prompt2;  

第3行:將標簽 1 加入到容器中去,以使起能夠在屏幕上顯示出來。 
第4行:同樣,將標簽2加入到容器中去,以使起能夠在屏幕上顯示出來。 

    標簽不能接受用戶的輸入,所以不能引發事件,不是事件源。如果 
希望修改標簽上顯示的文本,可以使用Label對象的方法getText(新字符 
串),同樣對於一個未知的標簽,可以通過調用Label對象getText() 
方法來獲得它的文本內容。 5.文本編輯區(TextField和TextArea)     Java中用於處理文本的基本組件有兩種:單行文本框 TextFIEld 和 多行文本區域TextArea,他們都是TextCompponent的子類。在創建文本組件時可以同時指出文本組件中的初始文本字符串。例子:上面的例子是怎樣用Java實現的呢?它的語法如下:……//與前面的例子相同1. TextField text1= new TextFiled("TextFIEld",20);2. text1.addActionListener(this);3. TextArea text2 = new TextArea ("TextArea",4,20);4. text2.addTextListener(this);5. add(text1);6. add(text2);……8. public void textValueChanged(TextEvent e)9. {10.  } ……//與前面的例子相同 分析: 
第1行:調用函數 TextFiled 建立第 1 個標簽 text1,初始字符串為 
“TextFIEld”,長度為20個字符的長度;  
第2行:為text1加入監視函數,用來響應它的事件改變。 
第3行:調用函數 TextArea 建立第 2 個標簽 text2,初始字符串為 
“TeatArea”,共有4行,每行也 為20個字符串的長度。  
第4行:為text2加入監視函數,用來響應它的事件改變。 


第5行:將標簽 1 加入到容器中去,以使起能夠在屏幕上顯示出來。 
第6行:同樣,將標簽2加入到容器中去,以使起能夠在屏幕上顯示出來。 

    除了繼承TextComponent類的方法,TextfIEld還有一些自己的特殊 
方法,例如,對於密碼輸入,要求輸入的內容用“*”來顯示,可以調用 
如下的方法: 
  TextField tf = new TextfIEld("輸入密碼:"); 
  tf.setEchoChar(’*’); 
 這樣就可以了。 

    TextArea 也有自己的特殊方法: 
  append(String s)在當前文本區域中已有的文本後面添加字符串 
"s"的內容。 insert(String s,int index)方法將字符串s的內容插入到 
已有文本的指定序號處。 
6.按 鈕    按鈕是圖形界面中非常重要的一種 基本組件,按鈕本身不顯示信息,它一般對應一個事先定義好的功能操作,該操作 通常用一段程序來表示。當用戶點擊按鈕 時,系統自動執行與該按鈕相聯系的程序, 從而完成預先指定的功能。      請看下面的例子:例子:提交:  取消:  要制作上面的按鈕,請看下面的語法:……//與前面的例子相同1. Button b = new Button("提 交");2. b.addActionListener(this);3. Button c = new Button("取 消");4. c.addActionListener(this);5. add(b);6. add(c);7. public void actionPerformed(ActionEvent e)8. {9.   } ……//與前面的例子相同分析: 
第1行:調用函數 Button 建立第 1 個按鈕 b,名稱為“提交”; 
第2行:為 提交按鈕b 加入監視函數,用來響應它的事件改變。 
第3行:調用函數 Button 建立第 2 個按鈕 c ,名稱為“取消”;  
第4行:為 取消按鈕c 加入監視函數,用來響應它的事件改變。 


第5行:將 “提交按鈕b” 入到容器中去,以使起能夠在屏幕上顯示出來。
第6行:同樣,將“取消按鈕c”加入到容器中去,以使起能夠在屏幕上顯示出來。 
    按鈕可以引發動作時間,當用戶點擊一個按鈕時就引發了一個動作事件,希 
望響應按鈕引發的動作事件的程序必須把按鈕注冊給實現了ActionPerformed 
(ActionEvent e)方法書寫體。在方法體中,可以調用 e.getSource()方法來獲取 
引發動作事件的按鈕對象引用,也可以調用e.getActionCommand()方法來過去實 
現為這格式件設置的命令名。調用按鈕的getLabel()方法可以返回按鈕的標簽; 
調用按鈕的setLabel(String s)方法可以把按鈕的標簽設置為s;調用 
setActionCommand()方法可以為按鈕設置一個命令名,這個命令名在響應事件時 
可能用到;調用getActionCommand()方法可以獲得這個命令名。要注意的是:所 
有的組件必須都放置在一頂的容器中才能發揮做用,將基本的組件防入容器的方法 
是該容器的add()方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved