版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五講 圖形用戶界面第五章第五章 圖形用戶界面設(shè)計(jì)圖形用戶界面設(shè)計(jì)5.1 Java 的GUI概述1、圖形用戶界面、圖形用戶界面GUI(Graphics User Interface),就是,就是應(yīng)用程序提供給用戶操作的圖形界面,包括窗口、菜單、按應(yīng)用程序提供給用戶操作的圖形界面,包括窗口、菜單、按鈕、工具欄和其他各種界面元素。鈕、工具欄和其他各種界面元素。2、在、在Java里有兩個(gè)包為里有兩個(gè)包為GUI設(shè)計(jì)提供了豐富的功能:設(shè)計(jì)提供了豐富的功能:awt(abstract windows toolkit)包和包和Swing包。包。3、awt是是java的早期版本,組件種類有限,只提供基本的的早期
2、版本,組件種類有限,只提供基本的GUI設(shè)計(jì)工具。設(shè)計(jì)工具。4、Swing包是包是SUN公司對(duì)早期版本的改進(jìn)版本,它不僅包公司對(duì)早期版本的改進(jìn)版本,它不僅包括括AWT中所有部件,并且提供了更加豐富的部件和功能,中所有部件,并且提供了更加豐富的部件和功能,它足以完全實(shí)現(xiàn)它足以完全實(shí)現(xiàn)GUI設(shè)計(jì)所需的一切功能。設(shè)計(jì)所需的一切功能。5、Swing會(huì)用到會(huì)用到AWT中許多知識(shí),掌握了中許多知識(shí),掌握了AWT,也就基,也就基本掌握了本掌握了Swing。一些基本概念nAWTn英文全稱:英文全稱:Abstract Windowing Toolkit n中文名:抽象窗口工具包中文名:抽象窗口工具包 nAWT是是
3、Java圖形用戶界面設(shè)計(jì)的基礎(chǔ)圖形用戶界面設(shè)計(jì)的基礎(chǔ)n包:包:java.awtnAWT組件舉例組件舉例nFrame:基本的窗體類:基本的窗體類nButton:按鈕類:按鈕類nTextField:文本框類:文本框類nLabel:標(biāo)簽類:標(biāo)簽類nCheckBox:復(fù)選框類:復(fù)選框類nList:列表類:列表類初識(shí)awt實(shí)例import java.awt.*;/引用引用awt包中的組件類包中的組件類public class TestFramepublic static void main(Stringargs)/產(chǎn)生一個(gè)具有標(biāo)題欄的框架窗口產(chǎn)生一個(gè)具有標(biāo)題欄的框架窗口Frame frm=new Fra
4、me(“我的框架窗口我的框架窗口”); frm.setSize(300,300);/設(shè)置窗口的大小設(shè)置窗口的大小frm.setVisible();/顯示窗口顯示窗口n創(chuàng)建窗體的步驟:創(chuàng)建窗體的步驟:1.創(chuàng)建一個(gè)窗體對(duì)象創(chuàng)建一個(gè)窗體對(duì)象(Frame frm=new Frame()2.設(shè)置窗體的大小設(shè)置窗體的大小(frm.setSize(400,400)3.顯示窗體顯示窗體(frm.setVisible() 例:AWT開發(fā)圖形界面在窗體中加入一個(gè)按鈕在窗體中加入一個(gè)按鈕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(); /聲明并實(shí)例化了一個(gè)聲明并實(shí)例化了一個(gè)Frame對(duì)象對(duì)象n frm.setSize(400, 300); /把窗體對(duì)象的寬度設(shè)為把窗體對(duì)象的寬度設(shè)為400,高度設(shè),高度設(shè)為為300n frm.setLayout(null); /設(shè)置窗體布局為空,必須要有這個(gè)語(yǔ)句設(shè)置窗體布局為空,必須要有這個(gè)語(yǔ)句n Button btn=new Button(一個(gè)按鈕一個(gè)按鈕); /創(chuàng)建一個(gè)創(chuàng)建一個(gè)Button對(duì)象,對(duì)象,按鈕文字是按鈕文字是“一個(gè)
6、按鈕一個(gè)按鈕”n btn.setLocation(100, 100); /設(shè)置按鈕的位置,左上角坐標(biāo)是設(shè)置按鈕的位置,左上角坐標(biāo)是(100,100)n btn.setSize(80,20); /設(shè)置按鈕的大小,寬為設(shè)置按鈕的大小,寬為80,高為,高為20n frm.add(btn); /把這個(gè)按鈕加到把這個(gè)按鈕加到frm窗體中窗體中n /frm.remove(btn);n frm.setVisible(true); /顯示窗體顯示窗體n n5.1.1 GUI組件分類在在AWT的概念中,的概念中,窗口系統(tǒng)中所顯示的各種對(duì)象都統(tǒng)稱窗口系統(tǒng)中所顯示的各種對(duì)象都統(tǒng)稱為為“GUI組件組件”(Compon
7、ent)。組件有基本組件和容器組組件有基本組件和容器組件之分件之分。 1、顧名思義,、顧名思義,基本組件是不可再分割的組件基本組件是不可再分割的組件,基本組件各自,基本組件各自都有它們特定的功能?;窘M件是構(gòu)成圖形用戶界面的基本都有它們特定的功能?;窘M件是構(gòu)成圖形用戶界面的基本元素。元素。2、 容 器 組 件、 容 器 組 件是 用 來(lái)包含其他組件的,故稱之為容器是 用 來(lái)包含其他組件的,故稱之為容器(container)。用戶可以把各種組件放入到容器中,也可以。用戶可以把各種組件放入到容器中,也可以把容器放到另一個(gè)容器中,從而形成具有層次的組件結(jié)構(gòu)。把容器放到另一個(gè)容器中,從而形成具有層次
8、的組件結(jié)構(gòu)。 3、AWT提供了的容器類有:提供了的容器類有:Frame類、類、Dia1og類和類和Panel類類。除了除了AWT提供的容器外,提供的容器外,Applet類也是一個(gè)容器,它是類也是一個(gè)容器,它是Panel類的一個(gè)子類類的一個(gè)子類。 AWT 標(biāo)準(zhǔn)組件圖示標(biāo)準(zhǔn)組件圖示ObiectEventGraphicsComponentCheckboxGroupTextComponentContainerButtonTextFieldCheckboxWindowpanelAppletLabelListChoiceTextAreaDialogFrameFileDialogScrollbarCanva
9、sColorFontFlowLayoutAWT中主要類及其關(guān)系 ComponentButton, Canvas, Checkbox, Choice, Label, List, ScrollbarTextComponentTextAreaTextFieldContainerPanelWindowScrollPaneDialogFrameMenuComponentMenuBarMenuItemnAWT組件組件 java.awt包包基本組件中文名稱功能Button按鈕完成一個(gè)命令Checkbox復(fù)選框可以同時(shí)進(jìn)行多個(gè)選擇CheckboxGroup單選框只能在一組中選擇一項(xiàng)Choice下拉式列表創(chuàng)建一
10、個(gè)彈出式的選擇菜單List列表創(chuàng)建一個(gè)選擇列表Menu菜單創(chuàng)建菜單系統(tǒng)TextField文本框輸入單行文字Label標(biāo)簽在標(biāo)簽內(nèi)繪制字符Canvas畫布進(jìn)行繪畫TextArea多行文本框輸入多行文字ScrollBar滾動(dòng)條在指定的范圍內(nèi)選擇一個(gè)值5.1.2 基本組件Button、Label、TextFieldn常用方法:常用方法:nsetSize():設(shè)置組件大?。涸O(shè)置組件大小nsetLocation():設(shè)置組件位置:設(shè)置組件位置nsetText():設(shè)置文字:設(shè)置文字nsetBackground():設(shè)置背景顏色:設(shè)置背景顏色n.5.1.3容器組件n由標(biāo)準(zhǔn)組件圖得知,由標(biāo)準(zhǔn)組件圖得知,AW
11、T包中的類繼承層次:包中的類繼承層次:n一部分直接從一部分直接從Object類繼承,包括組件類:類繼承,包括組件類:Componentn大部分基本組件從大部分基本組件從Component繼承,也包括容器類:繼承,也包括容器類:Containern一部分從一部分從Container繼承,這些類全部是容器類組件繼承,這些類全部是容器類組件n通過(guò)繼承的概念得知,由父類派生出的子類都會(huì)繼承父類的通過(guò)繼承的概念得知,由父類派生出的子類都會(huì)繼承父類的成員(包括變量和方法)成員(包括變量和方法)n所有容器類都具有的方法和變量可從所有容器類都具有的方法和變量可從Container類中了解。類中了解。(Java
12、API)nadd()方法方法:frm.add(btn)nremove()方法方法:frm.remove(btn)nsetLayout()方法方法:frm.setLayout(null)子類說(shuō) 明AppletPanel.Applet的擴(kuò)展,使所有Applet的超類Dialog對(duì)話框(可模式化或非模式化Window的擴(kuò)展)FieldDialog用于選擇文件的對(duì)話框FrameWindow的擴(kuò)展,應(yīng)用程序的容器,可以有菜單和標(biāo)題欄PanelContainer的擴(kuò)展,簡(jiǎn)單的容器WindowContainer的擴(kuò)展,沒(méi)有菜單或邊界,是Frame和Dialog的超類5.1.3 容器組件Frame類n常用方法
13、:常用方法:nsetSize():設(shè)置窗口大?。涸O(shè)置窗口大小nsetLocation():設(shè)置窗口位置:設(shè)置窗口位置nsetResizable():設(shè)置窗口大小是否可調(diào)整:設(shè)置窗口大小是否可調(diào)整nsetTitle():設(shè)置窗口標(biāo)題:設(shè)置窗口標(biāo)題nsetBackground:設(shè)置背景顏色:設(shè)置背景顏色n.5.2事件與事件處理n問(wèn)題的提出:?jiǎn)栴}的提出:n到目前為止,我們的圖形用戶界面程序基本上沒(méi)有交互到目前為止,我們的圖形用戶界面程序基本上沒(méi)有交互能力,或者說(shuō)不能對(duì)鼠標(biāo)和鍵盤的操作做出反應(yīng),如何能力,或者說(shuō)不能對(duì)鼠標(biāo)和鍵盤的操作做出反應(yīng),如何能使界面聽從指揮,就是事件處理要做的事情。能使界面聽從指
14、揮,就是事件處理要做的事情。nJava事件模型事件模型基本概念基本概念n事件源:發(fā)生事件的組件。如:按鈕、輸入文本框、菜事件源:發(fā)生事件的組件。如:按鈕、輸入文本框、菜單項(xiàng)、窗口。單項(xiàng)、窗口。n事件:用戶對(duì)組件的一個(gè)操作,稱之為一個(gè)事件。如:事件:用戶對(duì)組件的一個(gè)操作,稱之為一個(gè)事件。如:?jiǎn)螕舭粹o、輸入文本、選擇菜單、點(diǎn)擊窗口關(guān)閉按鈕單擊按鈕、輸入文本、選擇菜單、點(diǎn)擊窗口關(guān)閉按鈕n事件監(jiān)聽器:由實(shí)現(xiàn)了事件監(jiān)聽器接口的類創(chuàng)建的對(duì)象,事件監(jiān)聽器:由實(shí)現(xiàn)了事件監(jiān)聽器接口的類創(chuàng)建的對(duì)象,負(fù)責(zé)接收、解釋并處理事件的對(duì)象。負(fù)責(zé)接收、解釋并處理事件的對(duì)象。n事件監(jiān)聽器接口:規(guī)定了處理某種事件時(shí)必須實(shí)現(xiàn)哪些事
15、件監(jiān)聽器接口:規(guī)定了處理某種事件時(shí)必須實(shí)現(xiàn)哪些方法。方法。n在在JDK1.1之后,事件處理模型將事件源(產(chǎn)生事件的組之后,事件處理模型將事件源(產(chǎn)生事件的組件)和對(duì)事件的具體處理(利用一種稱為監(jiān)聽器件)和對(duì)事件的具體處理(利用一種稱為監(jiān)聽器listener的實(shí)體來(lái)對(duì)事件進(jìn)行具體的處理)分開。的實(shí)體來(lái)對(duì)事件進(jìn)行具體的處理)分開。n組件(事件源)都不處理自己的事件,而是將事件處理組件(事件源)都不處理自己的事件,而是將事件處理委托給一個(gè)或多個(gè)處理實(shí)體(監(jiān)聽器),這種事件處理委托給一個(gè)或多個(gè)處理實(shí)體(監(jiān)聽器),這種事件處理模型稱為事件的授權(quán)處理模型。不同的類型事件,可以模型稱為事件的授權(quán)處理模型。不
16、同的類型事件,可以交由不同類型的監(jiān)聽器去處理。交由不同類型的監(jiān)聽器去處理。事件機(jī)制組件組件(事件源事件源)事件監(jiān)聽器事件監(jiān)聽器事件事件對(duì)象對(duì)象(1)事件監(jiān)聽器注冊(cè)事件監(jiān)聽器注冊(cè)外部作用外部作用(2)生成事件對(duì)象生成事件對(duì)象(3)把事件對(duì)象傳把事件對(duì)象傳入事件處理器入事件處理器(3)n事件源(事件源(M)n事件監(jiān)聽器(事件監(jiān)聽器(N)n事件監(jiān)聽器的注冊(cè)事件監(jiān)聽器的注冊(cè)() : M.addXXXListener(N)n事件及事件類:事件及事件類:AWT對(duì)各種不同的用戶操作進(jìn)行分類,每對(duì)各種不同的用戶操作進(jìn)行分類,每一類對(duì)應(yīng)于一類對(duì)應(yīng)于java.awt.event包中的一個(gè)事件類。用戶對(duì)組包中的一個(gè)
17、事件類。用戶對(duì)組件操作時(shí),對(duì)于不同的組件或?qū)M件的不同操作會(huì)產(chǎn)生不同件操作時(shí),對(duì)于不同的組件或?qū)M件的不同操作會(huì)產(chǎn)生不同的事件對(duì)象。的事件對(duì)象。委托事件處理模型事件處理的包事件處理的包java.awt.event包,它提供AWT事件處理所需的類和接口。事件類事件事件類型類型事件名稱事件名稱事件說(shuō)明事件說(shuō)明引發(fā)情況引發(fā)情況 低級(jí)低級(jí)事件事件類類ComponentEventComponentEvent組件事件組件事件組件移動(dòng),組件大小變化組件移動(dòng),組件大小變化ContainerEventContainerEvent容器事件容器事件容器內(nèi)組件的添加、刪除容器內(nèi)組件的添加、刪除FocusEventFo
18、cusEvent焦點(diǎn)事件焦點(diǎn)事件獲得焦點(diǎn)、失去焦點(diǎn)獲得焦點(diǎn)、失去焦點(diǎn)InputEventInputEvent輸入事件輸入事件鍵盤輸入、鼠標(biāo)操作鍵盤輸入、鼠標(biāo)操作KeyEventKeyEvent鍵盤事件鍵盤事件某鍵按下、某鍵松開某鍵按下、某鍵松開MouseEventMouseEvent鼠標(biāo)事件鼠標(biāo)事件鼠標(biāo)移動(dòng)、鼠標(biāo)按下鼠標(biāo)移動(dòng)、鼠標(biāo)按下WindowEventWindowEvent窗口事件窗口事件窗口關(guān)閉、窗口圖標(biāo)化等窗口關(guān)閉、窗口圖標(biāo)化等語(yǔ)義語(yǔ)義事件事件類類ActionEventActionEvent動(dòng)作命令事件動(dòng)作命令事件選中菜單、按下按鈕等選中菜單、按下按鈕等AdjustmentEventA
19、djustmentEvent數(shù)值調(diào)整事件數(shù)值調(diào)整事件滾動(dòng)條位置改變滾動(dòng)條位置改變ItemEventItemEvent選項(xiàng)事件選項(xiàng)事件列表框、選擇框等選項(xiàng)選列表框、選擇框等選項(xiàng)選中中TextEventTextEvent文本事件文本事件文本框的輸入、修改等文本框的輸入、修改等事件處理的具體過(guò)程n事件處理過(guò)程:事件處理過(guò)程:n針對(duì)某事件針對(duì)某事件(XXXEvent)創(chuàng)建事件監(jiān)聽器類,實(shí)現(xiàn)相應(yīng)的創(chuàng)建事件監(jiān)聽器類,實(shí)現(xiàn)相應(yīng)的事件監(jiān)聽器接口事件監(jiān)聽器接口(XXXListener)n可以不單獨(dú)定義事件監(jiān)聽器類,而在當(dāng)前類中實(shí)現(xiàn)該接口。當(dāng)前可以不單獨(dú)定義事件監(jiān)聽器類,而在當(dāng)前類中實(shí)現(xiàn)該接口。當(dāng)前對(duì)象就可以做為
20、事件監(jiān)聽器。對(duì)象就可以做為事件監(jiān)聽器。n事件源注冊(cè)監(jiān)聽器對(duì)象事件源注冊(cè)監(jiān)聽器對(duì)象(addXXXListener()n對(duì)于文本框:在文本框獲得焦點(diǎn)后按回車鍵時(shí)會(huì)發(fā)對(duì)于文本框:在文本框獲得焦點(diǎn)后按回車鍵時(shí)會(huì)發(fā)生生ActionEvent事件,處理此事件的過(guò)程:事件,處理此事件的過(guò)程:n主類中實(shí)現(xiàn)接口主類中實(shí)現(xiàn)接口ActionListener,實(shí)現(xiàn)其中的方法,實(shí)現(xiàn)其中的方法actionPerformed()n文本框?qū)ο笞?cè)監(jiān)聽器文本框?qū)ο笞?cè)監(jiān)聽器:addActionListener(this) n例如:例如:Text1=new TestField(“0.0”,30) Text1.addActionL
21、istener(this)說(shuō)明一個(gè)事件源可能會(huì)產(chǎn)生多種事件,每一種事件處理都一個(gè)事件源可能會(huì)產(chǎn)生多種事件,每一種事件處理都需要注冊(cè)監(jiān)聽器,因此一個(gè)事件源可能會(huì)注冊(cè)多個(gè)需要注冊(cè)監(jiān)聽器,因此一個(gè)事件源可能會(huì)注冊(cè)多個(gè)監(jiān)聽器。監(jiān)聽器。f.addMouseMotionListener(this);f.addMouseListener(this);事件監(jiān)聽器可以實(shí)現(xiàn)多個(gè)事件監(jiān)聽器接口,此時(shí)可監(jiān)事件監(jiān)聽器可以實(shí)現(xiàn)多個(gè)事件監(jiān)聽器接口,此時(shí)可監(jiān)聽處理多類事件。聽處理多類事件。implements MouseMotionListener,MouseListener,WindowListenerActionEven
22、t中的方法中的方法public Object getSource()獲取事件源對(duì)象獲取事件源對(duì)象 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(“點(diǎn)擊按鈕”); /定義監(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(一個(gè)按鈕); btn.setLocation(100, 100); btn.setSize(80,20); BtnListener bl=new BtnListener();生成監(jiān)聽器 btn.addActionListener(bl);添加監(jiān)
24、聽器 frm.add(btn); /把這個(gè)按鈕加到frm窗體中 frm.setVisible(true); /顯示窗體 frm.addWindowListener(new WListener(); 例:public class AWTFrameE1 extends Frame implements ActionListener Button btn=new Button(一個(gè)按鈕); public AWTFrameE1() super(window test); add(btn); btn.addActionListener(this); pack(); setVisible(true); p
25、ublic void actionPerformed(ActionEvent e) System.out.println(點(diǎn)擊了按鈕); public static void main(String args) /main方法 AWTFrameE1 af=new AWTFrameE1();public class AWTFrameE1 extends Frame implements ActionListener,WindowListener Button btn=new Button(一個(gè)按鈕);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(點(diǎn)擊了按鈕);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語(yǔ)言為一些監(jiān)聽接口提供了適配器語(yǔ)言為一些監(jiān)聽接口提供了適配器(Adapeter)(Adapeter)類,事
28、件適配器類是抽象類,可以通過(guò)繼承事件類,事件適配器類是抽象類,可以通過(guò)繼承事件所對(duì)應(yīng)的所對(duì)應(yīng)的AdapterAdapter類,重寫需要實(shí)現(xiàn)的方法,無(wú)關(guān)類,重寫需要實(shí)現(xiàn)的方法,無(wú)關(guān)方法不用實(shí)現(xiàn),原因是監(jiān)聽器適配器類是對(duì)事件方法不用實(shí)現(xiàn),原因是監(jiān)聽器適配器類是對(duì)事件監(jiān)聽器接口的簡(jiǎn)單實(shí)現(xiàn)(方法體為空)。監(jiān)聽器接口的簡(jiǎn)單實(shí)現(xiàn)(方法體為空)。JDKJDK中提中提供供事件適配器方式來(lái)實(shí)現(xiàn)事件編程。方式來(lái)實(shí)現(xiàn)事件編程。如:事件監(jiān)聽器接口相相應(yīng)的事件適配器類:WindowListener -WindowAdapterWindowListener -WindowAdapter、MouseListener -Mo
29、useAdapterMouseListener -MouseAdapter、MouseMotionListener-MouseMotionListener-MouseMotionAdapterMouseMotionAdapter。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(JavaJava語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì))事件適配器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(); 低級(jí)事件(1)ComponentEv
31、ent(組件事件:組件尺寸的變化,移動(dòng))(2)ContainerEvent(容器事件:組件增加,移動(dòng))(3)WindowEvent(窗口事件:關(guān)閉窗口,窗口閉合,圖標(biāo)化)(4)FocusEvent(焦點(diǎn)事件:焦點(diǎn)的獲得和丟失)(5)KeyEvent(鍵盤事件:鍵按下、釋放)(6)MouseEvent(鼠標(biāo)事件:鼠標(biāo)單擊,移動(dòng))事件小結(jié)高級(jí)事件封裝了GUI組件的語(yǔ)義模式。它們沒(méi)有同任何的屏幕基礎(chǔ)的組件相連,而是與具有一定語(yǔ)義的事件相連。高級(jí)事件也叫語(yǔ)義事件。(1)ActionEvent(動(dòng)作事件:按鈕按下,TextField中按Enter鍵)(2)AdjustmentEvent(調(diào)節(jié)事件:在滾動(dòng)
32、條上移動(dòng)滑塊以調(diào)節(jié)數(shù)值)(3)ItemEvent(項(xiàng)目事件:選擇項(xiàng)目,不選擇“項(xiàng)目改變”)(4)TextEvent(文本事件,文本對(duì)象改變)(1)ActionEvent 激活組件 ActionListener ActionPerformed(ActionEvent)常用事件:(2)ItemEvent 選擇了某些項(xiàng)目 ItemListener ItemStateChanged(ItemEvent)(3)TextEvent 文本字段或文本區(qū)發(fā)生改變 TextListener textValueChanged(TextEvent)(4)WindowEvent 窗口收到窗口級(jí)事件 WindowList
33、ener windowClosing(WindowEvent) windowOpened(WindowEvent)5.3基本控制組件使用基本組件的使用步驟:基本組件的使用步驟:在init( )(對(duì)Java Applet而言)或Frame的構(gòu) 造函數(shù)內(nèi)(對(duì)Java Application而言)創(chuàng)建出各個(gè)組件對(duì)象并初始化其外觀、狀態(tài)等屬性;在init( )或Frame的構(gòu)造函數(shù)內(nèi)調(diào)用容器的add( )分別將創(chuàng)建出的各個(gè)組件加入到Applet或Frame所在的容器中;在init( )或Frame的構(gòu)造函數(shù)內(nèi)注冊(cè)其事件監(jiān)聽器對(duì)象。5.3.1 按鈕和標(biāo)簽按鈕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():建立建立一個(gè)空的一個(gè)空的Label組件。組件。nLabel(String text):建立一個(gè)標(biāo)題為:建立一個(gè)
35、標(biāo)題為text的的Label組件,預(yù)設(shè)組件,預(yù)設(shè)標(biāo)題的對(duì)齊方向?yàn)榭孔髮?duì)齊。標(biāo)題的對(duì)齊方向?yàn)榭孔髮?duì)齊。nLabel(String text,int alignment)nLabel類常用的方法類常用的方法npublic String getText():獲取當(dāng)前標(biāo)簽的文本。:獲取當(dāng)前標(biāo)簽的文本。npublic void setAlignment(int alignment):將當(dāng)前標(biāo)簽的對(duì):將當(dāng)前標(biāo)簽的對(duì)齊方式設(shè)置為給定參數(shù)所指定的。齊方式設(shè)置為給定參數(shù)所指定的。 可能值是可能值是 Label.LEFT,Label.RIGHT 和和 Label.CENTER。 npublic void setT
36、ext(String text):將當(dāng)前標(biāo)簽的文本設(shè)置為:將當(dāng)前標(biāo)簽的文本設(shè)置為指定文本。指定文本。n事件響應(yīng)事件響應(yīng)n不引發(fā)事件不引發(fā)事件5.3.2 文本框和文本區(qū)1 文本框(TextField)nTextField 對(duì)象表示可編輯的單行文本的文本組件。對(duì)象表示可編輯的單行文本的文本組件。nTextField類的構(gòu)造方法類的構(gòu)造方法nTextField():建立一個(gè)空的:建立一個(gè)空的TextField組件。組件。nTextField(int columns):建立一個(gè)空的:建立一個(gè)空的TextField組件,并設(shè)組件,并設(shè)置顯示單行字?jǐn)?shù)為置顯示單行字?jǐn)?shù)為columns。事實(shí)上組件不一定剛好能
37、容納。事實(shí)上組件不一定剛好能容納columns個(gè)字符,因?yàn)槊總€(gè)字符的寬度可能不一樣。個(gè)字符,因?yàn)槊總€(gè)字符的寬度可能不一樣。nTextField(String text):建立一個(gè):建立一個(gè)TextField組件,并設(shè)置上組件,并設(shè)置上面的文字為面的文字為text。n TextField(String text,int columns):建立一個(gè)上面文字為:建立一個(gè)上面文字為text的的TextField組件,并設(shè)置顯示字?jǐn)?shù)為組件,并設(shè)置顯示字?jǐn)?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)例:編寫一個(gè)程序包含有兩個(gè)按鈕和一個(gè)文本輸出區(qū),其中一個(gè)按鈕引起程序退出,另一個(gè)按鈕在輸出區(qū)顯示文本,而且每次當(dāng)?shù)诙€(gè)按鈕被單擊時(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(請(qǐng)點(diǎn)擊這里); private TextField text = new TextField(歡迎歡迎!,15); private boolean secondClick = false; public ClickMe() /定義構(gòu)造函數(shù) super(點(diǎn)擊的窗口名); 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、第二次點(diǎn)擊); else text.setText(啊,第一次點(diǎn)擊); secondClick = !secondClick; public static void main(String args) ClickMe myFrame = new ClickMe(); 2 文本區(qū)(TextArea)nTextArea類是用來(lái)顯示多行文字的,并且允許在上面編輯,類是用來(lái)顯示多行文字的,并且允許在上面編輯,可以把它看成是多行的可以把它看成是多行的TextField類。類。nTextArea類的構(gòu)造方法有下列五種:類的構(gòu)造方法有下列五種:nTextArea():建立一個(gè)空的:建立一個(gè)空的TextAre
42、a組件,預(yù)設(shè)兩個(gè)滾動(dòng)條都會(huì)出組件,預(yù)設(shè)兩個(gè)滾動(dòng)條都會(huì)出現(xiàn)。現(xiàn)。nTextArea(int rows,int columns):建立一個(gè)空的:建立一個(gè)空的TextArea組件,組件,并指定最多可顯示在屏幕上的行數(shù)和列數(shù),列數(shù)只是一個(gè)大概的值,并指定最多可顯示在屏幕上的行數(shù)和列數(shù),列數(shù)只是一個(gè)大概的值,要看里面字符的寬度和操作系統(tǒng)而定。預(yù)設(shè)兩個(gè)滾要看里面字符的寬度和操作系統(tǒng)而定。預(yù)設(shè)兩個(gè)滾 動(dòng)條都會(huì)出現(xiàn)。動(dòng)條都會(huì)出現(xiàn)。nTextArea(String text):建立一個(gè)空的:建立一個(gè)空的TextArea組件,預(yù)設(shè)兩個(gè)滾組件,預(yù)設(shè)兩個(gè)滾動(dòng)條都會(huì)出現(xiàn),但設(shè)置里面的初始文字為動(dòng)條都會(huì)出現(xiàn),但設(shè)置里面的
43、初始文字為text。如果。如果text等于等于null,則會(huì)設(shè)置為空字符串。則會(huì)設(shè)置為空字符串。nTextArea(String text,int rows,int columns):類似第二個(gè)構(gòu):類似第二個(gè)構(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實(shí)例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(“音樂(lè)音樂(lè)”);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實(shí)例(續(xù))CheckboxGroup類nCheckboxGroup 類用于將一個(gè)類用
48、于將一個(gè) Checkbox 按鈕集組成一組。按鈕集組成一組。一組中的一組中的Checkbox對(duì)象只有一個(gè)是被選中狀態(tài)。對(duì)象只有一個(gè)是被選中狀態(tài)。nCheckboxGroup類的構(gòu)造方法類的構(gòu)造方法nCheckbox():構(gòu)造方法很簡(jiǎn)單,不加任何參數(shù)。:構(gòu)造方法很簡(jiǎn)單,不加任何參數(shù)。n使用步驟:使用步驟:n創(chuàng)建創(chuàng)建CheckboxGroup對(duì)象,如對(duì)象,如chgn創(chuàng)建屬于創(chuàng)建屬于chg的的Checkbox對(duì)象,如:對(duì)象,如:nnew Checkbox(男男,chg,true)nnew Checkbox(女女,chg,true)nCheckboxGroup類的方法類的方法npublic Check
49、box getSelectedCheckbox():n獲取這個(gè)復(fù)選框組中處于選中狀態(tài)的獲取這個(gè)復(fù)選框組中處于選中狀態(tài)的Checkbox對(duì)象。如果均未選中則返對(duì)象。如果均未選中則返回回 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(音樂(lè)音樂(lè),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實(shí)例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 組件描述了一個(gè)文本項(xiàng)的滾動(dòng)列表組件描述了一個(gè)文本項(xiàng)的滾動(dòng)列表nList類
52、的構(gòu)造方法類的構(gòu)造方法nList():建立一個(gè)空的:建立一個(gè)空的List對(duì)象。對(duì)象。nList(int rows):建立一個(gè)空的:建立一個(gè)空的List單選對(duì)象,并設(shè)置最多可同時(shí)單選對(duì)象,并設(shè)置最多可同時(shí)顯示顯示rows個(gè)選項(xiàng)。個(gè)選項(xiàng)。nList(int rows,boolean multipleMode):設(shè)置最多可同時(shí)顯示:設(shè)置最多可同時(shí)顯示rows個(gè)選項(xiàng),也可以設(shè)置是否允許使用者復(fù)選,如果個(gè)選項(xiàng),也可以設(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對(duì)象。對(duì)象。n為為L(zhǎng)ist對(duì)象添加選項(xiàng)對(duì)象添加選項(xiàng)修改上例修改上例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)用實(shí)例Choice類nChoice選項(xiàng)框,又稱下拉列表。選項(xiàng)框,又稱下拉列表。nChoice類的構(gòu)造方法類的構(gòu)造方法nChoice():建立一個(gè)空的:建立一個(gè)空的Choice組件,不含任何選項(xiàng)。組件,不含任何選項(xiàng)。nChoice類的常用方法類的常
55、用方法npublic void add(String item)n添加一選項(xiàng)到添加一選項(xiàng)到 Choice 菜單中菜單中npublic String getItem(int index)n獲得此獲得此 Choice 菜單中指定索引上的字符串菜單中指定索引上的字符串npublic String getSelectedItem()n獲得當(dāng)前選擇的字符串表示形式獲得當(dāng)前選擇的字符串表示形式npublic void addItemListener(ItemListener l)n添加選項(xiàng)事件監(jiān)聽器添加選項(xiàng)事件監(jiān)聽器nChoice類使用的步驟類使用的步驟n創(chuàng)建一個(gè)創(chuàng)建一個(gè)Choice對(duì)象對(duì)象n增加選項(xiàng)到增
56、加選項(xiàng)到Choice對(duì)象中對(duì)象中n預(yù)設(shè)選擇項(xiàng)目預(yù)設(shè)選擇項(xiàng)目Choice實(shí)例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(團(tuán)員團(tuán)員 );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實(shí)例實(shí)例);f.setVisib
58、le(true); Choice實(shí)例(續(xù))n創(chuàng)建滾動(dòng)條創(chuàng)建滾動(dò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)滾動(dòng)條滾動(dòng)條(Scrollbar)5.4 布局管理n布局設(shè)計(jì)布局設(shè)計(jì)nBorderLayoutnFlowLayoutnCardLayoutnGridLayoutnBoxLayoutnNull布局布局5.4.1邊界布局BorderLayoutnBorderLayoutn是窗口的默認(rèn)布局是窗口的默認(rèn)布局n使用這種布局的容器,空間被分為東、西、南、北、中使用這種布局的容器,空間被分為東、西、南、北、中5個(gè)區(qū)域,個(gè)區(qū)域,由由BorderLayout中
60、的中的5個(gè)靜態(tài)常量個(gè)靜態(tài)常量EAST、WEST、SOUTH、NORTH、CENTER表示表示n添加組件時(shí),使用表示方位的常量規(guī)定添加組件的位置添加組件時(shí),使用表示方位的常量規(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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度地基資源買賣合同協(xié)議3篇
- 概率論課程設(shè)計(jì)小標(biāo)題
- 2024-2025學(xué)年度山東省德州市臨邑博文中學(xué)高一第一學(xué)期第三次月考?xì)v史試題
- 英語(yǔ)學(xué)科的課程設(shè)計(jì)方案
- 猜音符課程設(shè)計(jì)
- 網(wǎng)站課程設(shè)計(jì)收獲總結(jié)
- 班級(jí)班長(zhǎng)培訓(xùn)課程設(shè)計(jì)
- 穩(wěn)壓器課程設(shè)計(jì)
- 英語(yǔ)交際用語(yǔ)課程設(shè)計(jì)
- 教輔行業(yè)助理的工作總結(jié)和技能要求
- 自然辯證法習(xí)題及答案
- 特色農(nóng)產(chǎn)品超市方案
- 2024國(guó)有企業(yè)與民營(yíng)企業(yè)之間的混合所有制改革合同
- 2024年醫(yī)院食堂餐飲獨(dú)家承包協(xié)議
- 保險(xiǎn)公司廉政風(fēng)險(xiǎn)防控制度
- DB34T4868-2024智慧醫(yī)院醫(yī)用耗材院內(nèi)物流規(guī)范
- 2025年蛇年年會(huì)匯報(bào)年終總結(jié)大會(huì)模板
- 《稻草人》閱讀題及答案
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) X2-10-07-17 陶瓷產(chǎn)品設(shè)計(jì)師(試行)勞社廳發(fā)200633號(hào)
- 瑜伽基礎(chǔ)知識(shí)題庫(kù)單選題100道及答案解析
- 廣東省廣州市2024年中考數(shù)學(xué)真題試卷(含答案)
評(píng)論
0/150
提交評(píng)論