Java語言程序相關(guān)設(shè)計_第1頁
Java語言程序相關(guān)設(shè)計_第2頁
Java語言程序相關(guān)設(shè)計_第3頁
Java語言程序相關(guān)設(shè)計_第4頁
Java語言程序相關(guān)設(shè)計_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Java語言程序相關(guān)設(shè)計第 4 章 主要內(nèi)容1、Applet及awt類包2、文本組件及按鈕類34、事件處理5、常用圖形用戶界面組件Java語言程序相關(guān)設(shè)計awt類包及Applet4.1.1 AppletApplet是一個功能非常強大的能夠嵌入到HTML頁面中,并在瀏覽器中自動執(zhí)行的Java程序。當使用瀏覽器對一個包含Applet的Web頁面進行瀏覽時,瀏覽器將從Web服務器下載Applet程序到本地執(zhí)行。Java語言程序相關(guān)設(shè)計1、Applet的定義public class Applet extends Panel public Applet(); public void start(); p

2、ublic void stop(); public URL getDocumentBase();Java語言程序相關(guān)設(shè)計2、Java Applet程序的一般形式import java.applet.*;public 類名 extends Applet public void init(); public void start(); public void stop(); public void destroy();4個生命周期Java語言程序相關(guān)設(shè)計3、Java Applet程序的運行Java語言程序相關(guān)設(shè)計4.1.2 awt類包(1)基本的窗口類:Frame、Dialog(2)基本的GUI組

3、件類:Button、Label、TextField、TextArea、Checkbox(3)基本的事件接口: ActionListener、WindowListener、MouseListener、KeyListener(4)界面布局控制類:FlowLayout、BorderLayout、GridLayout、CardLayout(5)基本的繪圖支持類:Graphics、CanvasJava語言程序相關(guān)設(shè)計文本組件及按鈕類Java語言程序相關(guān)設(shè)計文本組件類1、TextComponent 類方法名功能setText(String t)設(shè)置文本內(nèi)容getText()獲取文本內(nèi)容isEdit()檢測

4、文本的可編輯性setEdit(Boolean b)檢測文本的可編輯性getSelectedText()獲取選取文本內(nèi)容select(int selStart,intselEnd)選取文本內(nèi)容Java語言程序相關(guān)設(shè)計2、TextField類文本框TextField 是對單行文本進行編輯的組件。它用來接受用戶的輸入碼或顯示可編輯的文本。Java語言程序相關(guān)設(shè)計(2)創(chuàng)建文本框TextFieldtext = new TextField(String str); Java語言程序相關(guān)設(shè)計【例4-1】1. /* TextField 類的簡單示例 */2. import java.applet.*;3.

5、import java.awt.*;4. public class Example4_1 extends Applet5. 6. TextField text1,text2,text3; 7. public void init()8. 9. text1=new TextField(輸入密碼:,10); 10. text1.setEditable(false); 11. text2=new TextField(10);12. text2.setEchoChar(*); 13. text3=new TextField(我是一個文本框,20);14. add(text1); /將文本框添加到Appl

6、et中15. add(text2);16. add(text3); 17. text3.setText(重新設(shè)置了文本); 18. 19. Java語言程序相關(guān)設(shè)計3、TextAear類文本區(qū)TextArea是對多行文本進行編輯的組件,它擁有水平或垂直的滾動條 . TextArea txt1=new TextArea(行,列); Java語言程序相關(guān)設(shè)計4、標簽Label類 (1)創(chuàng)建標簽創(chuàng)建標簽對象時應同時說明這個標簽中的字符串:Label lb = new Label(“請輸入姓名”);(2)常用方法setText(String str) 設(shè)置標簽文本內(nèi)容;getText() 獲取標簽文本

7、內(nèi)容。 Java語言程序相關(guān)設(shè)計按鈕(Button)類定義:1. public class Button extends Component 2. 3. public Button( )4. public Button(String label)5. public String getLabel( )6. public void setLabel(String label)7. public void addActionListener(ActionListener l)8. public void removeActionListener(ActionListener l)9. Java語言

8、程序相關(guān)設(shè)計表4.2 按鈕Button類常用方法方法名功能Button()構(gòu)造方法Button(String label)構(gòu)造方法getLabel()獲取標簽內(nèi)容setLabel(String label)設(shè)置標簽內(nèi)容addActionListener(ActionListener l)設(shè)置監(jiān)視器Java語言程序相關(guān)設(shè)計【例4-3】1. /* 構(gòu)造按鈕 */2. import java.applet.*;3. import java.awt.*;4. public class Example5_3 extends Applet5. 6. Button btn;7. public void in

9、it() 8. btn=new Button(確定);9. add(btn);/把按鈕加到Applet中10. 11. Java語言程序相關(guān)設(shè)計ActionListener接口 awt對這個接口的定義是:public interface ActionListener extends EventListener public abstract void actionPerformed(ActionEvent e)Java語言程序相關(guān)設(shè)計設(shè)計處理事件的類時,就要實現(xiàn)這個接口。其一般形式如下: class ClassName implements ActionListener btn.addActi

10、onListener(this); public abstract void actionPerformed(ActionEvent e) Java語言程序相關(guān)設(shè)計 通過實現(xiàn)ActionListener接口,使得監(jiān)視器能知道事件的發(fā)生。在Java 中,要求產(chǎn)生事件的組件向它的監(jiān)視器注冊,這樣,事件源與監(jiān)視器就建立了一個對應關(guān)系。建立對應關(guān)系的語句如下:對象名.addActionListener(ClassName);其中,對象是事件源,ClassName是監(jiān)視器。例如:btn.addActionListener(this); 這條語句的意思是:按鈕對象(事件源)btn向它的監(jiān)視器(當前類)注冊

11、,也就是產(chǎn)生事件的事件源對象向監(jiān)視器注冊。Java語言程序相關(guān)設(shè)計【例4-4】設(shè)計一個密碼驗證程序。1. /* 按鈕動作事件*/2. import java.applet.*;3. import java.awt.*;4. import java.awt.event.*;5. public class Example4_4 extends Applet implements ActionListener6. Label lb=new Label(“請輸入密碼:”); TextField txt1=new TextField(25); Button btn=new Button(確定); 10.

12、 TextField txt2=new TextField(25);Java語言程序相關(guān)設(shè)計11. public void init()12. 13. add(lb);14. add(txt1);15. txt1.setEchoChar(*); /設(shè)置掩碼16. add(btn);17. add(txt2);18. btn.addActionListener(this);19. 20. public void actionPerformed(ActionEvent e)21. 22. if (txt1.getText().equals(abc) /比較字符串23. txt2.setText(密

13、碼正確!);24. else25. txt2.setText(密碼錯誤!);26. 27. Java語言程序相關(guān)設(shè)計作業(yè):設(shè)計一個序列號程序:當輸滿一節(jié)字符后自動把焦點跳到下一個文本框。XXXXXXXXXXXXXXX請輸入序列號:XXXXXJava語言程序相關(guān)設(shè)計序列號算法假設(shè)根據(jù)用戶名計算序列號。例如將用戶輸入的用戶名的所有字母ASCII碼乘199再加起來,如果用戶名短于20位,補滿20位,超過20位,只使用前20位。 檢驗序列號的方法就是將根據(jù)用戶輸入的用戶名計算一遍,然后對比計算出來的號碼和用戶輸入的是否一致。Java語言程序相關(guān)設(shè)計面板與布局管理Java語言程序相關(guān)設(shè)計面板(Panel

14、)類 創(chuàng)建面板的一般步驟為:(1)創(chuàng)建面板對象: Panel myPanel=new Panel();(2)將面板添加到Applet容器中:add(myPanel);(3)把組件放置到面板上:myPanel.add(組件);Java語言程序相關(guān)設(shè)計【例4-5】面板Panel簡單示例 1. /* 面板Panel簡單示例 */2. import java.awt.*;4. 5. Panel panel1,panel2;6. Button button1,button2,button3,button4;7. public void init()8. 9. panel1=new Panel(); 10

15、. panel2=new Panel();11. add(panel1); add(panel2);/添加面板12. button1=new Button(Button1);13. button2=new Button(Button2);14. button3=new Button(Button3);15. button4=new Button(Button4);16. panel1.add(button1); panel1.add(button2);17. panel2.add(button3); panel2.add(button4); 18. panel1.setBackground(C

16、olor.red); 19. panel2.setBackground(Color.blue); 20. 21. Java語言程序相關(guān)設(shè)計布局策略Java在包中定義了5種布局,它們分別是:FlowLayout、BorderLayout、CardLayout、GridLayout、GridBagLayout。設(shè)置布局的格式為: 容器對象.setLayout(布局策略);Java語言程序相關(guān)設(shè)計1、浮動布局FlowLayout 浮動布局是按照組件的順序,用add方法將組件從左至右在一行排列,一行放不下時就自動換行。這是系統(tǒng)的默認的布局方式。 其設(shè)置的方法為:setLayout(new FlowLa

17、yout(); Java語言程序相關(guān)設(shè)計2、邊界布局BorderLayoutBorderLayout類把容器劃分成5個區(qū)域,分別標記為“North”、“South”、“West”、“East”和“Center”。 其設(shè)置的方法為:setLayout(new BorderLayout();中北西南東Java語言程序相關(guān)設(shè)計【例4-6邊界布局示例 】 1. /* 邊界布局示例 */2. import java.awt.*;4. 5. public void init()6. setLayout(new BorderLayout();7. /將其他構(gòu)件加入8. add(East, new Butto

18、n(東);9. add(South, new Button(南);10. add(West, new Button(西);11. add(North, new Button(北);12. add(Center, new Button(中);13. 14. Java語言程序相關(guān)設(shè)計3、網(wǎng)格布局GridLayoutGridLayout類以矩形網(wǎng)格形式對容器中的組件進行布局。容器被分成大小相等的單元格,單元格的大小由最大的構(gòu)件所決定,用add方法將組件一行一行地從左至右放置到布局的每個單元格中。其設(shè)置的方法為:setLayout(new GridLayout(int row, int cols);r

19、ow是網(wǎng)格的行數(shù),cols是網(wǎng)格的列數(shù)。 Java語言程序相關(guān)設(shè)計4、卡片布局CardLayout 這種布局包含幾個卡片,在某一時刻只有一個卡片是可見的,而且第一個卡片顯示的內(nèi)容可用自己的布局來管理。 卡片布局設(shè)置的方法為: setLayout(new CardLayout();Java語言程序相關(guān)設(shè)計【例4-8】應用卡片布局,顯示變換顏色的圖案。 程序的界面安排如圖: Java語言程序相關(guān)設(shè)計4.4 事件處理1、 AWT事件處理模型2、事件處理程序的編寫Java語言程序相關(guān)設(shè)計4.4.1 事件處理機制1、事件處理模型在事件處理的過程中,主要涉及三類對象 :Event-事件,用戶對界面操作在J

20、ava語言上的描述,以類的形式出現(xiàn),例如鍵盤操作對應的事件類是KeyEvent。 Event Source-事件源,事件發(fā)生的場所,通常就是各個組件,例如按鈕Button。 Event handler-事件處理者,接收事件對象并對其進行處理的對象。 Java語言程序相關(guān)設(shè)計授權(quán)處理機制Java語言程序相關(guān)設(shè)計2、事件類(例)在Java中,每個事件都是某種事件類的對象,可以歸為兩大類:低級事件和高級事件。低級事件:KeyEvent( 鍵盤事件:鍵按下、釋放) ;MouseEvent( 鼠標事件:鼠標單擊,移動) 。高級事件 :ActionEvent(動作事件:按鈕按下,TextField中按En

21、ter鍵等)方法:Object getSource():發(fā)生事件的對象。 Java語言程序相關(guān)設(shè)計3、事件監(jiān)聽器類(P103) 每類事件都有對應的事件監(jiān)聽接口,如: MouseEvent - MouseListener , KeyEvent - KeyListener等??梢远x一個實現(xiàn)了某個事件監(jiān)聽接口的類,并重寫需要的方法,專門負責某種事件處理。例如,定義一個事件監(jiān)聽類實現(xiàn)對鍵盤按下事件的監(jiān)聽:Java語言程序相關(guān)設(shè)計public class KeyListener implements KeyListener public void keyPressed(KeyEvent ev) /事件

22、處理代碼; public void keyReleased(KeyEvent ev) public void keyTyped(KeyEvent ev) 例:Java語言程序相關(guān)設(shè)計 1、事件處理程序的編寫步驟:首先:定義一個實現(xiàn)了相應事件監(jiān)聽接口的類,如: class KeyHandler implements KeyListener 其次:為組件注冊監(jiān)聽器對象, 如:btn.addKeyListener( new KeyHandler();事件處理程序的編寫Java語言程序相關(guān)設(shè)計2、使用類本身實現(xiàn)監(jiān)聽接口例如使用類本身監(jiān)聽KeyEvent事件:public class KeyTest i

23、mplements KeyListener public KeyTest() Button btn = new Button(“Rec”) /init btn.addKeyListener(this);/add listener /事件處理代碼 例: Java語言程序相關(guān)設(shè)計3、定義專門的外部類實現(xiàn)監(jiān)聽接口public class KeyTest public KeyTest() Button btn = new Button(“Rec”) ;/init btn.addKeyListener( new KeyHandler(); /add listener class KeyHandler i

24、mplements KeyListener /事件處理代碼 Java語言程序相關(guān)設(shè)計4、用內(nèi)部類實現(xiàn)監(jiān)聽接口public class KeyTest public KeyTest() Button btn = new Button(“Rec”); /init btn.addKeyListener( new KeyHandler(); /add listener class KeyHandler implements KeyListener /事件處理代碼 Java語言程序相關(guān)設(shè)計5、采用事件適配器Java為一些Listener接口提供了適配器類。如KeyListenerKeyAdapter等。

25、為用戶提供了一種簡單的實現(xiàn)監(jiān)聽器的手段,可以縮短程序代碼??梢酝ㄟ^繼承事件所對應的Adapter類,重寫需要的方法,而無關(guān)的方法不用實現(xiàn)。例如:Java語言程序相關(guān)設(shè)計6、一個組件注冊多個監(jiān)聽者由于同一個事件源上可能發(fā)生多種事件,因此Java采取了授權(quán)處理機制。事件源可以把在其自身所有可能發(fā)生的事件分別授權(quán)給不同的事件處理者來處理。監(jiān)聽器時刻監(jiān)聽著事件源上所有發(fā)生的事件類型,一旦該事件類型與自己所負責處理的事件類型一致,就馬上進行處理。例如:Java語言程序相關(guān)設(shè)計4.4.5 鼠標鍵盤事件 1、鼠標事件在圖形界面中,鼠標的使用是最頻繁的。在Java中,當用戶使用鼠標進行操作時,就會產(chǎn)生鼠標事件

26、MouseWvent。對MouseEvent事件的響應是實現(xiàn)MouseListener接口或MouseMotinListener接口,或者是繼承MouseApdapter類,來實現(xiàn)鼠標適配器MouseApdapter提供的方法。Java語言程序相關(guān)設(shè)計與鼠標的事件有關(guān)可以分為兩類:(1)主要針對鼠標的坐標位置進行檢測,使用MouseListener接口;(2)主要針對鼠標的拖曳狀態(tài)進行檢測,使用MouseMotinListener接口。Java語言程序相關(guān)設(shè)計2、鍵盤事件在Java中,當用戶使用鍵盤進行操作時,就會產(chǎn)生KeyEvent事件。監(jiān)聽器要完成對事件的響應,就要實現(xiàn)KeyListene

27、r接口,或者是繼承KeyAdapter類,實現(xiàn)對類中方法的定義。Java語言程序相關(guān)設(shè)計在KeyListener接口中有如下3個事件:(1)KEY_PRESSED:鍵盤按鍵被按下所產(chǎn)生的事件。(2)KEY_RELEASED:鍵盤按鍵被釋放所產(chǎn)生的事件。(3)KEY_TYPED:鍵盤按鍵被點擊所產(chǎn)生的事件。在實現(xiàn)接口時,對應的上面3個事件的處理方法是: keyPressed(Event e); keyReleased(KeyEvent e); keyTyped(keyEvent e); Java語言程序相關(guān)設(shè)計常用圖形用戶界面組件 窗體(Frame)類 Frame是帶有標題、邊框的頂層窗體。Fr

28、ame包含有標題、菜單、類似于文本區(qū)的區(qū)域和按鈕,其外觀依賴于所使用的操作系統(tǒng)。 Java語言程序相關(guān)設(shè)計(1)窗體Frame類的定義 awt對 Frame類的定義為:1. public class Frame extends Window implements MenuContainer2. 3. public Frame() 4. public Frame(String title)5. public String getTitle()6. public void setTitle(String title)7. public MenuBar getMenuBar()8. public v

29、oid setMenuBar(MenuBar mb)9. public void dispose()10. 其中:第3、4、行是窗體的構(gòu)造方法,第5行是獲取標題內(nèi)容,第6行是設(shè)置標題內(nèi)容,第7行的方法是獲取在該窗體的菜單,第8行是設(shè)置菜單,第9行是關(guān)閉窗體的方法。Frame 在缺省的情況是不可見的,要調(diào)用setVisible(true)方法使其可見。Frame 默認的布局方式為BorderLayout布局。 Java語言程序相關(guān)設(shè)計(2)創(chuàng)建窗體創(chuàng)建窗體有二種方法,一種方法是創(chuàng)建Frame類的子類,并重寫其構(gòu)造方法。另一種方法是創(chuàng)建Frame類的一個對象: Frame win=new Fram

30、e(簡單窗體);Java語言程序相關(guān)設(shè)計(3)Frame 類的方法 方法名功能Frame();創(chuàng)建無標題的窗體Frame(String s);創(chuàng)建標題為s的窗體setMenuBar(MenuBar mb);設(shè)置菜單dispose();關(guān)閉窗體,釋放占用資源setVisible(bolean b);設(shè)置窗體的可見性setSize(int width,int height);設(shè)置窗體的大小 Validate();使窗體中的組件能顯示出來setTitle(String title);設(shè)置標題內(nèi)容getTitle();獲取標題內(nèi)容Java語言程序相關(guān)設(shè)計一、選擇組件復選框(Checkbox)Check

31、box(Stringlabel) : 使用指定標簽創(chuàng)建一個復選框。 Checkbox(Stringlabel, booleanstate) : 使用指定標簽創(chuàng)建一個復選框,并將它設(shè)置為指定狀態(tài)。 Checkbox(Stringlabel, CheckboxGroupgroup, booleanstate) : 使用指定標簽構(gòu)造一個 Checkbox,并將它設(shè)置為指定狀態(tài),使它處于指定復選框組中。 4.5.2 選擇組件Java語言程序相關(guān)設(shè)計單選按鈕組(CheckboxGroup)提供了將多個復選框作為互斥的一個集合的方法,在任何時刻,這個集合中只有一個復選框的值為true。CheckboxGr

32、oup() :創(chuàng)建 CheckboxGroup 的一個新實例。 例如,以下的三個Checkbox都被指定加入cbg單選按鈕組中。Java語言程序相關(guān)設(shè)計CheckboxGroup cbg = new CheckboxGroup();Checkbox one = new Checkbox(“one”, true, cbg) ;Checkbox two = new Checkbox(“two”, false, cbg) ;Checkbox three = new Checkbox(“three”, false, cbg) ;Java語言程序相關(guān)設(shè)計下拉列表(Choice)下拉列表每次只能選取其中的

33、一項例如: Choice c = new Choice(); c.add(“First”); c.add(“Second”); c.add(“Third”);Java語言程序相關(guān)設(shè)計滾動列表(List)有多個文本選項,可以同時選擇多項。List(introws, booleanmultipleMode) 創(chuàng)建一個初始化為顯示指定行數(shù)的新滾動列表,同時指出是否可以同時選擇多項。例如: List lst = new List(3, false); lst.add(“One”); lst.add(“Two”); lst.add(“Three”);Java語言程序相關(guān)設(shè)計選擇事件(ItemEvent)所有選擇組件都有一個共同的事件類,引發(fā)選擇事件的動作為:改變復選框?qū)ο蟮臓顟B(tài)。改變下拉列表對象的狀態(tài)。改變滾動列表的狀態(tài)。使用ItemListener監(jiān)聽,該接口中只有一個方法:itemStateChanged(ItemEvente)Java語言程序相關(guān)設(shè)計Ite

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論