第五講圖形用戶界面設(shè)計_第1頁
第五講圖形用戶界面設(shè)計_第2頁
第五講圖形用戶界面設(shè)計_第3頁
第五講圖形用戶界面設(shè)計_第4頁
第五講圖形用戶界面設(shè)計_第5頁
已閱讀5頁,還剩89頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第五講 圖形用戶界面第五章第五章 圖形用戶界面設(shè)計圖形用戶界面設(shè)計5.1 Java 的GUI概述1、圖形用戶界面、圖形用戶界面GUI(Graphics User Interface),就是,就是應(yīng)用程序提供給用戶操作的圖形界面,包括窗口、菜單、按應(yīng)用程序提供給用戶操作的圖形界面,包括窗口、菜單、按鈕、工具欄和其他各種界面元素。鈕、工具欄和其他各種界面元素。2、在、在Java里有兩個包為里有兩個包為GUI設(shè)計提供了豐富的功能:設(shè)計提供了豐富的功能:awt(abstract windows toolkit)包和包和Swing包。包。3、awt是是java的早期版本,組件種類有限,只提供基本的的早期

2、版本,組件種類有限,只提供基本的GUI設(shè)計工具。設(shè)計工具。4、Swing包是包是SUN公司對早期版本的改進版本,它不僅包公司對早期版本的改進版本,它不僅包括括AWT中所有部件,并且提供了更加豐富的部件和功能,中所有部件,并且提供了更加豐富的部件和功能,它足以完全實現(xiàn)它足以完全實現(xiàn)GUI設(shè)計所需的一切功能。設(shè)計所需的一切功能。5、Swing會用到會用到AWT中許多知識,掌握了中許多知識,掌握了AWT,也就基,也就基本掌握了本掌握了Swing。一些基本概念nAWTn英文全稱:英文全稱:Abstract Windowing Toolkit n中文名:抽象窗口工具包中文名:抽象窗口工具包 nAWT是是

3、Java圖形用戶界面設(shè)計的基礎(chǔ)圖形用戶界面設(shè)計的基礎(chǔ)n包:包:java.awtnAWT組件舉例組件舉例nFrame:基本的窗體類:基本的窗體類nButton:按鈕類:按鈕類nTextField:文本框類:文本框類nLabel:標簽類:標簽類nCheckBox:復(fù)選框類:復(fù)選框類nList:列表類:列表類初識awt實例import java.awt.*;/引用引用awt包中的組件類包中的組件類public class TestFramepublic static void main(Stringargs)/產(chǎn)生一個具有標題欄的框架窗口產(chǎn)生一個具有標題欄的框架窗口Frame frm=new Fra

4、me(“我的框架窗口我的框架窗口”); frm.setSize(300,300);/設(shè)置窗口的大小設(shè)置窗口的大小frm.setVisible();/顯示窗口顯示窗口n創(chuàng)建窗體的步驟:創(chuàng)建窗體的步驟:1.創(chuàng)建一個窗體對象創(chuàng)建一個窗體對象(Frame frm=new Frame()2.設(shè)置窗體的大小設(shè)置窗體的大小(frm.setSize(400,400)3.顯示窗體顯示窗體(frm.setVisible() 例:AWT開發(fā)圖形界面在窗體中加入一個按鈕在窗體中加入一個按鈕nimport java.awt.*; /導(dǎo)入導(dǎo)入awt工具包工具包npublic class AWTFrame /類名是類名是A

5、WTFramenn public static void main(String args) /main方法方法n n Frame frm=new Frame(); /聲明并實例化了一個聲明并實例化了一個Frame對象對象n frm.setSize(400, 300); /把窗體對象的寬度設(shè)為把窗體對象的寬度設(shè)為400,高度設(shè),高度設(shè)為為300n frm.setLayout(null); /設(shè)置窗體布局為空,必須要有這個語句設(shè)置窗體布局為空,必須要有這個語句n Button btn=new Button(一個按鈕一個按鈕); /創(chuàng)建一個創(chuàng)建一個Button對象,對象,按鈕文字是按鈕文字是“一個

6、按鈕一個按鈕”n btn.setLocation(100, 100); /設(shè)置按鈕的位置,左上角坐標是設(shè)置按鈕的位置,左上角坐標是(100,100)n btn.setSize(80,20); /設(shè)置按鈕的大小,寬為設(shè)置按鈕的大小,寬為80,高為,高為20n frm.add(btn); /把這個按鈕加到把這個按鈕加到frm窗體中窗體中n /frm.remove(btn);n frm.setVisible(true); /顯示窗體顯示窗體n n5.1.1 GUI組件分類在在AWT的概念中,的概念中,窗口系統(tǒng)中所顯示的各種對象都統(tǒng)稱窗口系統(tǒng)中所顯示的各種對象都統(tǒng)稱為為“GUI組件組件”(Compon

7、ent)。組件有基本組件和容器組組件有基本組件和容器組件之分件之分。 1、顧名思義,、顧名思義,基本組件是不可再分割的組件基本組件是不可再分割的組件,基本組件各自,基本組件各自都有它們特定的功能?;窘M件是構(gòu)成圖形用戶界面的基本都有它們特定的功能?;窘M件是構(gòu)成圖形用戶界面的基本元素。元素。2、 容 器 組 件、 容 器 組 件是 用 來包含其他組件的,故稱之為容器是 用 來包含其他組件的,故稱之為容器(container)。用戶可以把各種組件放入到容器中,也可以。用戶可以把各種組件放入到容器中,也可以把容器放到另一個容器中,從而形成具有層次的組件結(jié)構(gòu)。把容器放到另一個容器中,從而形成具有層次

8、的組件結(jié)構(gòu)。 3、AWT提供了的容器類有:提供了的容器類有:Frame類、類、Dia1og類和類和Panel類類。除了除了AWT提供的容器外,提供的容器外,Applet類也是一個容器,它是類也是一個容器,它是Panel類的一個子類類的一個子類。 AWT 標準組件圖示標準組件圖示ObiectEventGraphicsComponentCheckboxGroupTextComponentContainerButtonTextFieldCheckboxWindowpanelAppletLabelListChoiceTextAreaDialogFrameFileDialogScrollbarCanva

9、sColorFontFlowLayoutAWT中主要類及其關(guān)系 ComponentButton, Canvas, Checkbox, Choice, Label, List, ScrollbarTextComponentTextAreaTextFieldContainerPanelWindowScrollPaneDialogFrameMenuComponentMenuBarMenuItemnAWT組件組件 java.awt包包基本組件中文名稱功能Button按鈕完成一個命令Checkbox復(fù)選框可以同時進行多個選擇CheckboxGroup單選框只能在一組中選擇一項Choice下拉式列表創(chuàng)建一

10、個彈出式的選擇菜單List列表創(chuàng)建一個選擇列表Menu菜單創(chuàng)建菜單系統(tǒng)TextField文本框輸入單行文字Label標簽在標簽內(nèi)繪制字符Canvas畫布進行繪畫TextArea多行文本框輸入多行文字ScrollBar滾動條在指定的范圍內(nèi)選擇一個值5.1.2 基本組件Button、Label、TextFieldn常用方法:常用方法:nsetSize():設(shè)置組件大?。涸O(shè)置組件大小nsetLocation():設(shè)置組件位置:設(shè)置組件位置nsetText():設(shè)置文字:設(shè)置文字nsetBackground():設(shè)置背景顏色:設(shè)置背景顏色n.5.1.3容器組件n由標準組件圖得知,由標準組件圖得知,AW

11、T包中的類繼承層次:包中的類繼承層次:n一部分直接從一部分直接從Object類繼承,包括組件類:類繼承,包括組件類:Componentn大部分基本組件從大部分基本組件從Component繼承,也包括容器類:繼承,也包括容器類:Containern一部分從一部分從Container繼承,這些類全部是容器類組件繼承,這些類全部是容器類組件n通過繼承的概念得知,由父類派生出的子類都會繼承父類的通過繼承的概念得知,由父類派生出的子類都會繼承父類的成員(包括變量和方法)成員(包括變量和方法)n所有容器類都具有的方法和變量可從所有容器類都具有的方法和變量可從Container類中了解。類中了解。(Java

12、API)nadd()方法方法:frm.add(btn)nremove()方法方法:frm.remove(btn)nsetLayout()方法方法:frm.setLayout(null)子類說 明AppletPanel.Applet的擴展,使所有Applet的超類Dialog對話框(可模式化或非模式化Window的擴展)FieldDialog用于選擇文件的對話框FrameWindow的擴展,應(yīng)用程序的容器,可以有菜單和標題欄PanelContainer的擴展,簡單的容器WindowContainer的擴展,沒有菜單或邊界,是Frame和Dialog的超類5.1.3 容器組件Frame類n常用方法

13、:常用方法:nsetSize():設(shè)置窗口大?。涸O(shè)置窗口大小nsetLocation():設(shè)置窗口位置:設(shè)置窗口位置nsetResizable():設(shè)置窗口大小是否可調(diào)整:設(shè)置窗口大小是否可調(diào)整nsetTitle():設(shè)置窗口標題:設(shè)置窗口標題nsetBackground:設(shè)置背景顏色:設(shè)置背景顏色n.5.2事件與事件處理n問題的提出:問題的提出:n到目前為止,我們的圖形用戶界面程序基本上沒有交互到目前為止,我們的圖形用戶界面程序基本上沒有交互能力,或者說不能對鼠標和鍵盤的操作做出反應(yīng),如何能力,或者說不能對鼠標和鍵盤的操作做出反應(yīng),如何能使界面聽從指揮,就是事件處理要做的事情。能使界面聽從指

14、揮,就是事件處理要做的事情。nJava事件模型事件模型基本概念基本概念n事件源:發(fā)生事件的組件。如:按鈕、輸入文本框、菜事件源:發(fā)生事件的組件。如:按鈕、輸入文本框、菜單項、窗口。單項、窗口。n事件:用戶對組件的一個操作,稱之為一個事件。如:事件:用戶對組件的一個操作,稱之為一個事件。如:單擊按鈕、輸入文本、選擇菜單、點擊窗口關(guān)閉按鈕單擊按鈕、輸入文本、選擇菜單、點擊窗口關(guān)閉按鈕n事件監(jiān)聽器:由實現(xiàn)了事件監(jiān)聽器接口的類創(chuàng)建的對象,事件監(jiān)聽器:由實現(xiàn)了事件監(jiān)聽器接口的類創(chuàng)建的對象,負責(zé)接收、解釋并處理事件的對象。負責(zé)接收、解釋并處理事件的對象。n事件監(jiān)聽器接口:規(guī)定了處理某種事件時必須實現(xiàn)哪些事

15、件監(jiān)聽器接口:規(guī)定了處理某種事件時必須實現(xiàn)哪些方法。方法。n在在JDK1.1之后,事件處理模型將事件源(產(chǎn)生事件的組之后,事件處理模型將事件源(產(chǎn)生事件的組件)和對事件的具體處理(利用一種稱為監(jiān)聽器件)和對事件的具體處理(利用一種稱為監(jiān)聽器listener的實體來對事件進行具體的處理)分開。的實體來對事件進行具體的處理)分開。n組件(事件源)都不處理自己的事件,而是將事件處理組件(事件源)都不處理自己的事件,而是將事件處理委托給一個或多個處理實體(監(jiān)聽器),這種事件處理委托給一個或多個處理實體(監(jiān)聽器),這種事件處理模型稱為事件的授權(quán)處理模型。不同的類型事件,可以模型稱為事件的授權(quán)處理模型。不

16、同的類型事件,可以交由不同類型的監(jiān)聽器去處理。交由不同類型的監(jiān)聽器去處理。事件機制組件組件(事件源事件源)事件監(jiān)聽器事件監(jiān)聽器事件事件對象對象(1)事件監(jiān)聽器注冊事件監(jiān)聽器注冊外部作用外部作用(2)生成事件對象生成事件對象(3)把事件對象傳把事件對象傳入事件處理器入事件處理器(3)n事件源(事件源(M)n事件監(jiān)聽器(事件監(jiān)聽器(N)n事件監(jiān)聽器的注冊事件監(jiān)聽器的注冊() : M.addXXXListener(N)n事件及事件類:事件及事件類:AWT對各種不同的用戶操作進行分類,每對各種不同的用戶操作進行分類,每一類對應(yīng)于一類對應(yīng)于java.awt.event包中的一個事件類。用戶對組包中的一個

17、事件類。用戶對組件操作時,對于不同的組件或?qū)M件的不同操作會產(chǎn)生不同件操作時,對于不同的組件或?qū)M件的不同操作會產(chǎn)生不同的事件對象。的事件對象。委托事件處理模型事件處理的包事件處理的包java.awt.event包,它提供AWT事件處理所需的類和接口。事件類事件事件類型類型事件名稱事件名稱事件說明事件說明引發(fā)情況引發(fā)情況 低級低級事件事件類類ComponentEventComponentEvent組件事件組件事件組件移動,組件大小變化組件移動,組件大小變化ContainerEventContainerEvent容器事件容器事件容器內(nèi)組件的添加、刪除容器內(nèi)組件的添加、刪除FocusEventFo

18、cusEvent焦點事件焦點事件獲得焦點、失去焦點獲得焦點、失去焦點InputEventInputEvent輸入事件輸入事件鍵盤輸入、鼠標操作鍵盤輸入、鼠標操作KeyEventKeyEvent鍵盤事件鍵盤事件某鍵按下、某鍵松開某鍵按下、某鍵松開MouseEventMouseEvent鼠標事件鼠標事件鼠標移動、鼠標按下鼠標移動、鼠標按下WindowEventWindowEvent窗口事件窗口事件窗口關(guān)閉、窗口圖標化等窗口關(guān)閉、窗口圖標化等語義語義事件事件類類ActionEventActionEvent動作命令事件動作命令事件選中菜單、按下按鈕等選中菜單、按下按鈕等AdjustmentEventA

19、djustmentEvent數(shù)值調(diào)整事件數(shù)值調(diào)整事件滾動條位置改變滾動條位置改變ItemEventItemEvent選項事件選項事件列表框、選擇框等選項選列表框、選擇框等選項選中中TextEventTextEvent文本事件文本事件文本框的輸入、修改等文本框的輸入、修改等事件處理的具體過程n事件處理過程:事件處理過程:n針對某事件針對某事件(XXXEvent)創(chuàng)建事件監(jiān)聽器類,實現(xiàn)相應(yīng)的創(chuàng)建事件監(jiān)聽器類,實現(xiàn)相應(yīng)的事件監(jiān)聽器接口事件監(jiān)聽器接口(XXXListener)n可以不單獨定義事件監(jiān)聽器類,而在當(dāng)前類中實現(xiàn)該接口。當(dāng)前可以不單獨定義事件監(jiān)聽器類,而在當(dāng)前類中實現(xiàn)該接口。當(dāng)前對象就可以做為

20、事件監(jiān)聽器。對象就可以做為事件監(jiān)聽器。n事件源注冊監(jiān)聽器對象事件源注冊監(jiān)聽器對象(addXXXListener()n對于文本框:在文本框獲得焦點后按回車鍵時會發(fā)對于文本框:在文本框獲得焦點后按回車鍵時會發(fā)生生ActionEvent事件,處理此事件的過程:事件,處理此事件的過程:n主類中實現(xiàn)接口主類中實現(xiàn)接口ActionListener,實現(xiàn)其中的方法,實現(xiàn)其中的方法actionPerformed()n文本框?qū)ο笞员O(jiān)聽器文本框?qū)ο笞员O(jiān)聽器:addActionListener(this) n例如:例如:Text1=new TestField(“0.0”,30) Text1.addActionL

21、istener(this)說明一個事件源可能會產(chǎn)生多種事件,每一種事件處理都一個事件源可能會產(chǎn)生多種事件,每一種事件處理都需要注冊監(jiān)聽器,因此一個事件源可能會注冊多個需要注冊監(jiān)聽器,因此一個事件源可能會注冊多個監(jiān)聽器。監(jiān)聽器。f.addMouseMotionListener(this);f.addMouseListener(this);事件監(jiān)聽器可以實現(xiàn)多個事件監(jiān)聽器接口,此時可監(jiān)事件監(jiān)聽器可以實現(xiàn)多個事件監(jiān)聽器接口,此時可監(jiān)聽處理多類事件。聽處理多類事件。implements MouseMotionListener,MouseListener,WindowListenerActionEven

22、t中的方法中的方法public Object getSource()獲取事件源對象獲取事件源對象 event.getActionCommand(),獲取組件的字符串名,獲取組件的字符串名稱。例如:稱。例如: But1=new Button(按鈕按鈕1); e.getActionCommand(); e.getSource();import java.awt.*; import java.awt.event.*;class BtnListener implements ActionListener public void actionPerformed(ActionEvent e) System

23、.out.println(“點擊按鈕”); /定義監(jiān)聽器類public class AWTFrameE public static void main(String args) Frame frm=new Frame(); frm.setSize(400, 300); frm.setLayout(null); Button btn=new Button(一個按鈕); btn.setLocation(100, 100); btn.setSize(80,20); BtnListener bl=new BtnListener();生成監(jiān)聽器 btn.addActionListener(bl);添加監(jiān)

24、聽器 frm.add(btn); /把這個按鈕加到frm窗體中 frm.setVisible(true); /顯示窗體 frm.addWindowListener(new WListener(); 例:public class AWTFrameE1 extends Frame implements ActionListener Button btn=new Button(一個按鈕); public AWTFrameE1() super(window test); add(btn); btn.addActionListener(this); pack(); setVisible(true); p

25、ublic void actionPerformed(ActionEvent e) System.out.println(點擊了按鈕); public static void main(String args) /main方法 AWTFrameE1 af=new AWTFrameE1();public class AWTFrameE1 extends Frame implements ActionListener,WindowListener Button btn=new Button(一個按鈕);public AWTFrameE1()super(window test);add(btn);b

26、tn.addActionListener(this); pack();setVisible(true);addWindowListener(this);public void actionPerformed(ActionEvent e) System.out.println(點擊了按鈕);public void windowClosing(WindowEvent e) System.exit(0);/退出程序 public void windowOpened(WindowEvent e) public void windowIconified(WindowEvent e) public voi

27、d windowDeiconified(WindowEvent e) public void windowClosed(WindowEvent e) public void windowActivated(WindowEvent e) public void windowDeactivated(WindowEvent e)public static void main(String args) /main方法 AWTFrameE1 af=new AWTFrameE1();nJavaJava語言為一些監(jiān)聽接口提供了適配器語言為一些監(jiān)聽接口提供了適配器(Adapeter)(Adapeter)類,事

28、件適配器類是抽象類,可以通過繼承事件類,事件適配器類是抽象類,可以通過繼承事件所對應(yīng)的所對應(yīng)的AdapterAdapter類,重寫需要實現(xiàn)的方法,無關(guān)類,重寫需要實現(xiàn)的方法,無關(guān)方法不用實現(xiàn),原因是監(jiān)聽器適配器類是對事件方法不用實現(xiàn),原因是監(jiān)聽器適配器類是對事件監(jiān)聽器接口的簡單實現(xiàn)(方法體為空)。監(jiān)聽器接口的簡單實現(xiàn)(方法體為空)。JDKJDK中提中提供供事件適配器方式來實現(xiàn)事件編程。方式來實現(xiàn)事件編程。如:事件監(jiān)聽器接口相相應(yīng)的事件適配器類:WindowListener -WindowAdapterWindowListener -WindowAdapter、MouseListener -Mo

29、useAdapterMouseListener -MouseAdapter、MouseMotionListener-MouseMotionListener-MouseMotionAdapterMouseMotionAdapter。計算機應(yīng)用技術(shù)系教師專用(JavaJava語言程序設(shè)計語言程序設(shè)計)事件適配器import java.awt.*;import java.awt.event.*;public class ProgramWithAnonymousListener extends Frame /構(gòu)造方法 public ProgramWithAnonymousListener() addW

30、indowListener(new WindowAdapter() / new關(guān)鍵字后帶類型名 public void windowClosing(WindowEvent we) System.exit(0); ); / 整體作為addWindowListener方法的輸入?yún)?shù) setSize(200,200); setVisible(true); public static void main(String args) ProgramWithAnonymousListener p = new ProgramWithAnonymousListener(); 低級事件(1)ComponentEv

31、ent(組件事件:組件尺寸的變化,移動)(2)ContainerEvent(容器事件:組件增加,移動)(3)WindowEvent(窗口事件:關(guān)閉窗口,窗口閉合,圖標化)(4)FocusEvent(焦點事件:焦點的獲得和丟失)(5)KeyEvent(鍵盤事件:鍵按下、釋放)(6)MouseEvent(鼠標事件:鼠標單擊,移動)事件小結(jié)高級事件封裝了GUI組件的語義模式。它們沒有同任何的屏幕基礎(chǔ)的組件相連,而是與具有一定語義的事件相連。高級事件也叫語義事件。(1)ActionEvent(動作事件:按鈕按下,TextField中按Enter鍵)(2)AdjustmentEvent(調(diào)節(jié)事件:在滾動

32、條上移動滑塊以調(diào)節(jié)數(shù)值)(3)ItemEvent(項目事件:選擇項目,不選擇“項目改變”)(4)TextEvent(文本事件,文本對象改變)(1)ActionEvent 激活組件 ActionListener ActionPerformed(ActionEvent)常用事件:(2)ItemEvent 選擇了某些項目 ItemListener ItemStateChanged(ItemEvent)(3)TextEvent 文本字段或文本區(qū)發(fā)生改變 TextListener textValueChanged(TextEvent)(4)WindowEvent 窗口收到窗口級事件 WindowList

33、ener windowClosing(WindowEvent) windowOpened(WindowEvent)5.3基本控制組件使用基本組件的使用步驟:基本組件的使用步驟:在init( )(對Java Applet而言)或Frame的構(gòu) 造函數(shù)內(nèi)(對Java Application而言)創(chuàng)建出各個組件對象并初始化其外觀、狀態(tài)等屬性;在init( )或Frame的構(gòu)造函數(shù)內(nèi)調(diào)用容器的add( )分別將創(chuàng)建出的各個組件加入到Applet或Frame所在的容器中;在init( )或Frame的構(gòu)造函數(shù)內(nèi)注冊其事件監(jiān)聽器對象。5.3.1 按鈕和標簽按鈕n構(gòu)造方法:構(gòu)造方法:nButton()nBu

34、tton(String label)n常用方法常用方法npublic void setLabel(String s)npublic String getLabel()npublic void addActionListener(ActionListener a)n事件響應(yīng)事件響應(yīng)njava.awt.event.ActionListener(接口接口)nvoid actionPerformed(ActionEvent e)Label類nLabel類的構(gòu)造方法類的構(gòu)造方法nLabel():建立建立一個空的一個空的Label組件。組件。nLabel(String text):建立一個標題為:建立一個

35、標題為text的的Label組件,預(yù)設(shè)組件,預(yù)設(shè)標題的對齊方向為靠左對齊。標題的對齊方向為靠左對齊。nLabel(String text,int alignment)nLabel類常用的方法類常用的方法npublic String getText():獲取當(dāng)前標簽的文本。:獲取當(dāng)前標簽的文本。npublic void setAlignment(int alignment):將當(dāng)前標簽的對:將當(dāng)前標簽的對齊方式設(shè)置為給定參數(shù)所指定的。齊方式設(shè)置為給定參數(shù)所指定的。 可能值是可能值是 Label.LEFT,Label.RIGHT 和和 Label.CENTER。 npublic void setT

36、ext(String text):將當(dāng)前標簽的文本設(shè)置為:將當(dāng)前標簽的文本設(shè)置為指定文本。指定文本。n事件響應(yīng)事件響應(yīng)n不引發(fā)事件不引發(fā)事件5.3.2 文本框和文本區(qū)1 文本框(TextField)nTextField 對象表示可編輯的單行文本的文本組件。對象表示可編輯的單行文本的文本組件。nTextField類的構(gòu)造方法類的構(gòu)造方法nTextField():建立一個空的:建立一個空的TextField組件。組件。nTextField(int columns):建立一個空的:建立一個空的TextField組件,并設(shè)組件,并設(shè)置顯示單行字數(shù)為置顯示單行字數(shù)為columns。事實上組件不一定剛好能

37、容納。事實上組件不一定剛好能容納columns個字符,因為每個字符的寬度可能不一樣。個字符,因為每個字符的寬度可能不一樣。nTextField(String text):建立一個:建立一個TextField組件,并設(shè)置上組件,并設(shè)置上面的文字為面的文字為text。n TextField(String text,int columns):建立一個上面文字為:建立一個上面文字為text的的TextField組件,并設(shè)置顯示字數(shù)為組件,并設(shè)置顯示字數(shù)為columns。 1 文本框(TextField)nTextField類的方法類的方法n public void setText(String s)n

38、 public String getText()n事件響應(yīng)事件響應(yīng)njava.awt.event.TextListener(接口接口)nvoid textValueChanged(TextEvent e)njava.awt.event.ActionListener(接口接口)nvoid actionPerformed(ActionEvent e)例:編寫一個程序包含有兩個按鈕和一個文本輸出區(qū),其中一個按鈕引起程序退出,另一個按鈕在輸出區(qū)顯示文本,而且每次當(dāng)?shù)诙€按鈕被單擊時交替地顯示兩種文本。import java.awt.*;import java.awt.event.*;public cl

39、ass ClickMe extends Frame implements ActionListener private Button quit = new Button(“Quit”); / 定義成員變量 private Button click = new Button(請點擊這里); private TextField text = new TextField(歡迎歡迎!,15); private boolean secondClick = false; public ClickMe() /定義構(gòu)造函數(shù) super(點擊的窗口名); setLayout(new FlowLayout();

40、add(quit); add(click); click.addActionListener(this); quit.addActionListener(this); text.setEditable(false); add(text); pack(); setVisible(true); public void actionPerformed(ActionEvent e) / 定義方法 if (e.getSource() = quit) System.exit(0); else if (e.getSource() = click) if (secondClick) text.setText(

41、第二次點擊); else text.setText(啊,第一次點擊); secondClick = !secondClick; public static void main(String args) ClickMe myFrame = new ClickMe(); 2 文本區(qū)(TextArea)nTextArea類是用來顯示多行文字的,并且允許在上面編輯,類是用來顯示多行文字的,并且允許在上面編輯,可以把它看成是多行的可以把它看成是多行的TextField類。類。nTextArea類的構(gòu)造方法有下列五種:類的構(gòu)造方法有下列五種:nTextArea():建立一個空的:建立一個空的TextAre

42、a組件,預(yù)設(shè)兩個滾動條都會出組件,預(yù)設(shè)兩個滾動條都會出現(xiàn)?,F(xiàn)。nTextArea(int rows,int columns):建立一個空的:建立一個空的TextArea組件,組件,并指定最多可顯示在屏幕上的行數(shù)和列數(shù),列數(shù)只是一個大概的值,并指定最多可顯示在屏幕上的行數(shù)和列數(shù),列數(shù)只是一個大概的值,要看里面字符的寬度和操作系統(tǒng)而定。預(yù)設(shè)兩個滾要看里面字符的寬度和操作系統(tǒng)而定。預(yù)設(shè)兩個滾 動條都會出現(xiàn)。動條都會出現(xiàn)。nTextArea(String text):建立一個空的:建立一個空的TextArea組件,預(yù)設(shè)兩個滾組件,預(yù)設(shè)兩個滾動條都會出現(xiàn),但設(shè)置里面的初始文字為動條都會出現(xiàn),但設(shè)置里面的

43、初始文字為text。如果。如果text等于等于null,則會設(shè)置為空字符串。則會設(shè)置為空字符串。nTextArea(String text,int rows,int columns):類似第二個構(gòu):類似第二個構(gòu)造方法,但設(shè)置里面的初始文字為造方法,但設(shè)置里面的初始文字為text。nTextArea(String text,int rows,int columns,int scrollbars)n常用方法常用方法npublic void append(String s)npublic void insert(String s, int index)npubilc void replaceRang

44、e(String s, int start, int end)n事件響應(yīng)事件響應(yīng)njava.awt.event.TextListener(接口接口)nvoid textValueChanged(TextEvent e)2 文本區(qū)(TextArea)5.3.3 單復(fù)選框和列表n復(fù)選框復(fù)選框(Checkbox)n創(chuàng)建復(fù)選框創(chuàng)建復(fù)選框npublic Checkbox()npublic Checkbox(String s)npublic TextField(String s, boolean state)n常用方法常用方法npublic boolean getState()npublic void s

45、etState(boolean b)npublic void setLabel(String s)npublic String getLabel()n事件響應(yīng)事件響應(yīng)njava.awt.event.ItemListener(接口接口)nvoid itemStateChanged(ItemEvent e)Checkbox實例import java.awt.*;import java.awt.event.*;public class E2 extends Frame implements ItemListenerCheckbox check1,check2;TextField tf;public

46、E2()setSize(400,300);setLayout(new FlowLayout();check1=new Checkbox(“音樂音樂”);check2=new Checkbox(繪畫繪畫);tf=new TextField(10);tf.setEditable(false);add(check1);add(check2);add(tf);check1.addItemListener(this);check2.addItemListener(this); setVisible(true);public E2(String s)this();setTitle(s);public vo

47、id itemStateChanged(ItemEvent e)String s=null;Checkbox c;c=(Checkbox)e.getSource();if (c.getState() s=s.concat(c.getLabel(); else s=s.substring(0,s.length()-c.getLabel().length();tf.setText(s);public static void main(Stringargs) E2 f=new E2(檢查框檢查框); Checkbox實例(續(xù))CheckboxGroup類nCheckboxGroup 類用于將一個類用

48、于將一個 Checkbox 按鈕集組成一組。按鈕集組成一組。一組中的一組中的Checkbox對象只有一個是被選中狀態(tài)。對象只有一個是被選中狀態(tài)。nCheckboxGroup類的構(gòu)造方法類的構(gòu)造方法nCheckbox():構(gòu)造方法很簡單,不加任何參數(shù)。:構(gòu)造方法很簡單,不加任何參數(shù)。n使用步驟:使用步驟:n創(chuàng)建創(chuàng)建CheckboxGroup對象,如對象,如chgn創(chuàng)建屬于創(chuàng)建屬于chg的的Checkbox對象,如:對象,如:nnew Checkbox(男男,chg,true)nnew Checkbox(女女,chg,true)nCheckboxGroup類的方法類的方法npublic Check

49、box getSelectedCheckbox():n獲取這個復(fù)選框組中處于選中狀態(tài)的獲取這個復(fù)選框組中處于選中狀態(tài)的Checkbox對象。如果均未選中則返對象。如果均未選中則返回回 null 。/修改上例中部分程序public class E2 extends Frame implements ItemListenerCheckbox check1,check2;CheckboxGroup chg;TextField tf;public E2()setSize(400,300);setLayout(new FlowLayout();chg=new CheckboxGroup();check1

50、=new Checkbox(音樂音樂,chg,true);check2=new Checkbox(繪畫繪畫,chg,false);tf=new TextField(10);tf.setEditable(false);add(check1);add(check2);add(tf);check1.addItemListener(this);check2.addItemListener(this);CheckboxGroup實例n創(chuàng)建列表創(chuàng)建列表npublic List()npublic List(int n)npublic List(int n, boolean b)n常用方法常用方法npubli

51、c void add(String s)npublic void add(String s, int n)npublic void remove(int n)npublic void removeAll()npublic int getSelectedIndex()npublic String getSelectedItem()n事件響應(yīng)事件響應(yīng)njava.awt.event.ItemListener(接口接口)njava.awt.event.ActionListener(接口接口)列表列表(List)ListnList 組件描述了一個文本項的滾動列表組件描述了一個文本項的滾動列表nList類

52、的構(gòu)造方法類的構(gòu)造方法nList():建立一個空的:建立一個空的List對象。對象。nList(int rows):建立一個空的:建立一個空的List單選對象,并設(shè)置最多可同時單選對象,并設(shè)置最多可同時顯示顯示rows個選項。個選項。nList(int rows,boolean multipleMode):設(shè)置最多可同時顯示:設(shè)置最多可同時顯示rows個選項,也可以設(shè)置是否允許使用者復(fù)選,如果個選項,也可以設(shè)置是否允許使用者復(fù)選,如果multipleMode的值為的值為true,則允許復(fù)選,反之則只允許單選。,則允許復(fù)選,反之則只允許單選。nList類的常用方法類的常用方法npublic vo

53、id add(String item)npublic String getSelectedItem()public String getSelectedItem() npublic String getSelectedItems()npublic void addItemListener(ItemListener l)n使用使用List類的步驟:類的步驟:n創(chuàng)建創(chuàng)建List對象。對象。n為為List對象添加選項對象添加選項修改上例修改上例List list;TextField tf;public E5()setSize(400,300);setLayout(new FlowLayout();l

54、ist=new List(5,true);list.add(高中高中);list.add(大專大專);list.add(本科本科);list.add(研究生研究生);tf=new TextField(10);tf.setEditable(false);add(list);add(tf);list.addItemListener(this);List類應(yīng)用實例Choice類nChoice選項框,又稱下拉列表。選項框,又稱下拉列表。nChoice類的構(gòu)造方法類的構(gòu)造方法nChoice():建立一個空的:建立一個空的Choice組件,不含任何選項。組件,不含任何選項。nChoice類的常用方法類的常

55、用方法npublic void add(String item)n添加一選項到添加一選項到 Choice 菜單中菜單中npublic String getItem(int index)n獲得此獲得此 Choice 菜單中指定索引上的字符串菜單中指定索引上的字符串npublic String getSelectedItem()n獲得當(dāng)前選擇的字符串表示形式獲得當(dāng)前選擇的字符串表示形式npublic void addItemListener(ItemListener l)n添加選項事件監(jiān)聽器添加選項事件監(jiān)聽器nChoice類使用的步驟類使用的步驟n創(chuàng)建一個創(chuàng)建一個Choice對象對象n增加選項到增

56、加選項到Choice對象中對象中n預(yù)設(shè)選擇項目預(yù)設(shè)選擇項目Choice實例import java.awt.*;import java.awt.event.*;public class E4 extends Frame implements ItemListenerChoice choice;TextField tf;public E4()setSize(400,300);setLayout(new FlowLayout();choice=new Choice();choice.add(黨員黨員 );choice.add(團員團員 );choice.add(群眾群眾 );tf=new TextF

57、ield(10);tf.setEditable(false);add(choice);add(tf);choice.addItemListener(this);public E4(String s)this();setTitle(s);public void itemStateChanged(ItemEvent e)String s=null;s=(Choice)e.getSource().getSelectedItem();tf.setText(s);public static void main(Stringargs) E4 f=new E4( Choice實例實例);f.setVisib

58、le(true); Choice實例(續(xù))n創(chuàng)建滾動條創(chuàng)建滾動條npublic Scrollbar(int orientation, int value, int visible, int minimum, int maximum)n常用方法常用方法npublic void setUnitIncrement(int n)npublic void setBlockIncrement(int n)npublic int getUnitIncrement()npublic int getBlockIncrement()npublic int getValue()n事件響應(yīng)事件響應(yīng)njava.awt.

59、event.AdjustmentListener(接口接口)nvoid adjustmentValueChanged(AdjustmentEvent e)滾動條滾動條(Scrollbar)5.4 布局管理n布局設(shè)計布局設(shè)計nBorderLayoutnFlowLayoutnCardLayoutnGridLayoutnBoxLayoutnNull布局布局5.4.1邊界布局BorderLayoutnBorderLayoutn是窗口的默認布局是窗口的默認布局n使用這種布局的容器,空間被分為東、西、南、北、中使用這種布局的容器,空間被分為東、西、南、北、中5個區(qū)域,個區(qū)域,由由BorderLayout中

60、的中的5個靜態(tài)常量個靜態(tài)常量EAST、WEST、SOUTH、NORTH、CENTER表示表示n添加組件時,使用表示方位的常量規(guī)定添加組件的位置添加組件時,使用表示方位的常量規(guī)定添加組件的位置nadd(b1,BorderLayout.SOUTH)n也可以使用指定的字符串表示方位:也可以使用指定的字符串表示方位:add(b1, South)n構(gòu)造方法構(gòu)造方法nBorderLayout()nBorderLayout(intint hgap, inthgap, int vgap)vgap) nhgap水平間隔水平間隔nvgap垂直間隔垂直間隔n使用使用BorderLayout布局管理器的步驟布局管理器

溫馨提示

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

評論

0/150

提交評論