




版權(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í)現(xiàn)圖形用戶界面的設(shè)計(jì)與實(shí)現(xiàn)教材第教材第7章章 設(shè)計(jì)原則 容器與布局 標(biāo)準(zhǔn)組件 事件處理 自定義成分用戶界面設(shè)計(jì)原則用戶界面設(shè)計(jì)原則n使用圖形界面使用圖形界面GUI (Graphics User Interface)v字符界面字符界面采用命令行方式與用戶交互。采用命令行方式與用戶交互。v圖形界面圖形界面用多種媒體顯示信息,用直觀、方便的用多種媒體顯示信息,用直觀、方便的GUI標(biāo)標(biāo)準(zhǔn)組件來(lái)接收命令。準(zhǔn)組件來(lái)接收命令。n控制權(quán)在用戶(用戶要由操作的主動(dòng)權(quán))控制權(quán)在用戶(用戶要由操作的主動(dòng)權(quán))n界面與操作的風(fēng)格一致性。界面與操作的風(fēng)格一致性。n寬容(容錯(cuò))性。寬容(容錯(cuò))性。n簡(jiǎn)
2、潔與美觀并重。簡(jiǎn)潔與美觀并重。界面構(gòu)成界面構(gòu)成容器標(biāo)準(zhǔn)組件用戶自定義成分v創(chuàng)建GUI各組成成分,并安排相互 位置關(guān)系(包含,相鄰,相交)。v定義GUI各成分對(duì)不同事件的響應(yīng), 實(shí)現(xiàn)與用戶的交互與界面功能。界面元素界面元素n容器是用來(lái)組織其他界面成分和元素的單元。容器是用來(lái)組織其他界面成分和元素的單元。v可以形成容器的層次,構(gòu)筑復(fù)雜結(jié)構(gòu)可以形成容器的層次,構(gòu)筑復(fù)雜結(jié)構(gòu)vWindow(Frame、Applet、Dialog )n組件是圖形用戶界面的基本單位,它里面不再包含組件是圖形用戶界面的基本單位,它里面不再包含其他的成分。其他的成分。vGUI組件是圖形用戶界面標(biāo)準(zhǔn)化的結(jié)果。組件是圖形用戶界面標(biāo)
3、準(zhǔn)化的結(jié)果。vGUI組件的作用是完成與用戶的交互。組件的作用是完成與用戶的交互。n用戶自定義成分用戶自定義成分v文字、圖形、圖象文字、圖形、圖象v不能像標(biāo)準(zhǔn)組件一樣被系統(tǒng)識(shí)別和承認(rèn),只起裝飾作用不能像標(biāo)準(zhǔn)組件一樣被系統(tǒng)識(shí)別和承認(rèn),只起裝飾作用。v不能響應(yīng)用戶的動(dòng)作,不具有交互功能。不能響應(yīng)用戶的動(dòng)作,不具有交互功能。AWT包包nAbstract Windows Toolkit(抽象窗口工具)(抽象窗口工具)vAWT類庫(kù)中的各種操作是被定義為在一個(gè)并不存在的類庫(kù)中的各種操作是被定義為在一個(gè)并不存在的“抽象窗口抽象窗口”中進(jìn)行的。中進(jìn)行的。v抽取不同軟硬件平臺(tái)中所實(shí)現(xiàn)的窗口的公共特性。抽取不同軟硬
4、件平臺(tái)中所實(shí)現(xiàn)的窗口的公共特性。v所設(shè)計(jì)的界面獨(dú)立于具體的界面實(shí)現(xiàn)所設(shè)計(jì)的界面獨(dú)立于具體的界面實(shí)現(xiàn) 。n提供與機(jī)器無(wú)關(guān)的基本提供與機(jī)器無(wú)關(guān)的基本GUI標(biāo)準(zhǔn)組件。標(biāo)準(zhǔn)組件。v選擇類組件:選擇類組件: 單選按鈕、復(fù)選框、下拉選單、列表框單選按鈕、復(fù)選框、下拉選單、列表框v文字處理類組件:文字處理類組件: 標(biāo)簽、文本框、編輯框標(biāo)簽、文本框、編輯框v命令類組件:命令類組件: 按鈕、工具欄、菜單按鈕、工具欄、菜單AWT類層次關(guān)系圖類層次關(guān)系圖Component Container Panel Applet Window Frame Dialog ButtonTextFieldTextAreaTextCo
5、mponentCheckboxMenuComponentMenuMenuItemMenuBar其他組件獨(dú)立不獨(dú)立Component類類可顯示在屏幕上的圖形對(duì)象,可與用戶交互。可顯示在屏幕上的圖形對(duì)象,可與用戶交互。n方法:方法:vadd(PopupMenuadd(PopupMenu popup) popup) 加一彈出菜單加一彈出菜單vaddFocusListener(FocusListeneraddFocusListener(FocusListener l) l)將發(fā)生在本組件上的將發(fā)生在本組件上的事件注冊(cè)給監(jiān)聽者,以進(jìn)行事件處理。事件注冊(cè)給監(jiān)聽者,以進(jìn)行事件處理。vsetSize(ints
6、etSize(int width, intwidth, int height) height) 設(shè)置組件尺寸設(shè)置組件尺寸vpainpaint(Graphics(Graphics g) g) 重畫組件重畫組件vsetFont(FontsetFont(Font f) f) 設(shè)置組件字體設(shè)置組件字體vsetBackground(ColorsetBackground(Color c) c) 設(shè)置組件背景色設(shè)置組件背景色vsetForeground(ColorsetForeground(Color c) c) 設(shè)置組件前景色設(shè)置組件前景色paint和和repaint 方法方法n某組件的某組件的paint
7、()和和 update()為系統(tǒng)自動(dòng)調(diào)用的有關(guān)為系統(tǒng)自動(dòng)調(diào)用的有關(guān)圖形繪制的方法,不可人為編程調(diào)用;但可圖形繪制的方法,不可人為編程調(diào)用;但可編程重編程重新定義其操作內(nèi)容。新定義其操作內(nèi)容。n使用使用repaint()方法可以觸發(fā)方法可以觸發(fā)update()方法。方法。paint( )當(dāng)某些操作破壞了顯示,需重新繪制時(shí)第一次繪制repaint()編程控制1. 擦除并填充成背景色update()調(diào)用2. 調(diào)用paint()Font類類njava.awt.Font n設(shè)計(jì)字體顯示效果(創(chuàng)建字體對(duì)象)設(shè)計(jì)字體顯示效果(創(chuàng)建字體對(duì)象)Font fn = new Font(String 字體,字體,in
8、t 風(fēng)格,風(fēng)格,int 字號(hào)字號(hào));v字體:字體:TimesRoman, Courier, Arial等等v風(fēng)格:三個(gè)常量風(fēng)格:三個(gè)常量Font.PLAIN, Font.BOLD, Font.ITALICv字號(hào):字的大?。ò鯏?shù))字號(hào):字的大?。ò鯏?shù))n使用字體對(duì)象使用字體對(duì)象 如設(shè)置某組件當(dāng)前使用的字體:如設(shè)置某組件當(dāng)前使用的字體:setFont(Font fn)n獲取組件當(dāng)前使用的字體:獲取組件當(dāng)前使用的字體:getFont()Color類類構(gòu)造函數(shù)構(gòu)造函數(shù)1(設(shè)置顏色)(設(shè)置顏色) Color c = new Color(int red, int green, int blue) 范圍范圍
9、 :0255 new Color(200,200,200) new Color(255,0,100)n構(gòu)造函數(shù)構(gòu)造函數(shù)2Color c = new Color(int rgb) 蘭色:蘭色:07 位位 綠色:綠色:815位位 紅色:紅色:1623位位n 顏色常量值顏色常量值public static final Color public static final Color black Color.black , Color.blue , Color.gray , Color. red Color.white Containers 容器組件容器組件nWindow 不需要其他組件支撐,獨(dú)立顯示。
10、不需要其他組件支撐,獨(dú)立顯示。vFrame vDialog 沒有菜單條,不能改變大小沒有菜單條,不能改變大小nPanel 必須放在必須放在Window組件中(或組件中(或Web瀏覽瀏覽器窗口)才能顯示。它為一矩形區(qū)域,在其中可擺器窗口)才能顯示。它為一矩形區(qū)域,在其中可擺放其他組件,可以有自己的布局管理器。放其他組件,可以有自己的布局管理器。n基本方法基本方法vadd(Component comp) 將指定組件放到容器中將指定組件放到容器中vadd(Component comp,int index)vremove(Component comp) 刪除指定組件刪除指定組件vsetLayout(L
11、ayoutManager mgr) 設(shè)置容器布局設(shè)置容器布局vpaint 畫容器(及其上面的組件)畫容器(及其上面的組件)容器的組件布局容器的組件布局n依靠布局管理器(依靠布局管理器(layout manager)方式方式v調(diào)用容器的調(diào)用容器的setLayout方法,為容器指定某種布局管理器方法,為容器指定某種布局管理器的一個(gè)對(duì)象。的一個(gè)對(duì)象。 例:例: setLayout(new FlowLayout() ) v該布局管理器對(duì)象負(fù)責(zé)確定容器中組件的位置和大小。該布局管理器對(duì)象負(fù)責(zé)確定容器中組件的位置和大小。v當(dāng)容器需要定位組件和確定組件大小時(shí),就會(huì)給布局管當(dāng)容器需要定位組件和確定組件大小時(shí),
12、就會(huì)給布局管理器對(duì)象發(fā)消息,讓它完成該項(xiàng)工作。理器對(duì)象發(fā)消息,讓它完成該項(xiàng)工作。n直接管理組件方式直接管理組件方式v調(diào)用容器的調(diào)用容器的 setLayout(null) 方法,關(guān)閉布局管理器。方法,關(guān)閉布局管理器。v調(diào)用每一個(gè)組件的調(diào)用每一個(gè)組件的setLocation()方法決定組件位置。方法決定組件位置。v調(diào)用每一個(gè)組件的調(diào)用每一個(gè)組件的setSize()方法決定其大小。方法決定其大小。n直接管理組件將失去平臺(tái)無(wú)關(guān)性。直接管理組件將失去平臺(tái)無(wú)關(guān)性。布局管理器對(duì)象布局管理器種類布局管理器種類nFlowLayout: 組件在一行中從左至右水平排列,排組件在一行中從左至右水平排列,排滿后折行滿后
13、折行nBorderLayout:北、南、東、西、中:北、南、東、西、中nGridLayout:以行和列的網(wǎng)格形式安排組件以行和列的網(wǎng)格形式安排組件nGridBagLayout:更復(fù)雜、功能更強(qiáng)的網(wǎng)格布局更復(fù)雜、功能更強(qiáng)的網(wǎng)格布局nCardLayout:每一個(gè)組件作為一個(gè)卡片,容器僅每一個(gè)組件作為一個(gè)卡片,容器僅顯示多個(gè)卡片中的某一個(gè)顯示多個(gè)卡片中的某一個(gè)確定容器布局確定容器布局n缺缺省的布局管理器省的布局管理器vWindow 、Frame、Dialog BorderLayoutvPanel 、Applet FlowLayout:n選擇布局管理器的方法選擇布局管理器的方法v建立布局管理器類的對(duì)象
14、建立布局管理器類的對(duì)象v利用容器的利用容器的 setLayout 為容器指定布局(即指定一個(gè)布為容器指定布局(即指定一個(gè)布局管理器的對(duì)象)局管理器的對(duì)象)例:將例:將myFrame布局設(shè)定為布局設(shè)定為FlowLayout類型類型 myFrame.setLayout(new FlowLayout();FramenFrame(String title) 構(gòu)造一個(gè)新的不可見的構(gòu)造一個(gè)新的不可見的framen隱含的布局管理器是:隱含的布局管理器是:BorderLayoutnsetLayout() 設(shè)置新的布局管理器。設(shè)置新的布局管理器。nadd(Component comp) 在容器上增加一個(gè)組件(在
15、容器為不可見的狀態(tài)時(shí)在容器上增加一個(gè)組件(在容器為不可見的狀態(tài)時(shí)加)。加)。nvoid setSize(int width, int height) nsetVisible(true)7-1aFrame Panel Frame fm1 = new Frame(Hello); fm1.setSize(400,350); fm1.setBackground(Color.gray); fm1.setLayout(null); Panel pn1 = new Panel(); pn1.setSize(100,100); pn1.setBackground(Color.red); pn1.setLoca
16、tion(0,50); fm1.add(pn1); fm1.setVisible(true); 7-1bFlowLayout布局管理器布局管理器n構(gòu)造函數(shù):構(gòu)造函數(shù):vFlowLayout() ;vFlowLayout(int align, int hgap, int vgap);align :對(duì)齊方式:對(duì)齊方式:LEFT CENTER RIGHThgap :組件水平間距:組件水平間距 (象素)(象素)vgap :組件垂直間距(象素):組件垂直間距(象素)n無(wú)參數(shù)的構(gòu)造函數(shù)創(chuàng)建的無(wú)參數(shù)的構(gòu)造函數(shù)創(chuàng)建的FlowLayout對(duì)象,其對(duì)齊對(duì)象,其對(duì)齊方式為方式為CENTER居中方式,組件間的橫縱間距
17、都為居中方式,組件間的橫縱間距都為5個(gè)像素。個(gè)像素。 FlowLayout布局管理器布局管理器 Frame f = new Frame(FlowLayout); f.setSize(400,300); /不起作用不起作用 f.setBackground(Color.gray); f.setLayout(new FlowLayout(FlowLayout.LEFT,10,20); b1 = new Button(button1); b2 = new Button(button2); b3 = new Button(button3); f.add(b1); f.add(b2); f.add(b3)
18、; f.setVisible(true); f.pack();7-1cBorderLayout布局管理器布局管理器nsetLayout(new BorderLayout() )nadd(b1,BorderLayout.NORTH); n當(dāng)容器大小改變,組件相對(duì)位置不會(huì)改變。當(dāng)容器大小改變,組件相對(duì)位置不會(huì)改變。CenterNorthSouthWestEastBorderLayout布局管理器布局管理器 f = new Frame(BorderLayout); f.setSize(200,200); b1 = new Button(button1); b5 = new Button(button
19、5); f.add(b1,BorderLayout.NORTH); f.add(b2,BorderLayout.SOUTH); f.add(b3,BorderLayout.WEST); f.add(b4,BorderLayout.EAST); f.add(b5,BorderLayout.CENTER); f.setVisible(true);7-1dBorder-Panelclass MyFrame extends Frame MyFrame() Button b1 = new Button( 1 ); Button b2 = new Button( 2 ); Button b3 = new
20、Button( 3 ); Button b4 = new Button( 4 ); Panel p = new Panel(); p.add(b1); p.add(b2); add(p,BorderLayout.NORTH); add(b3,BorderLayout.WEST); add(b4,BorderLayout.CENTER); pack(); setVisible(true);7-1eGridLayout布局管理器布局管理器n創(chuàng)建創(chuàng)建GridLayout對(duì)象作為布局編輯器,指定劃分網(wǎng)對(duì)象作為布局編輯器,指定劃分網(wǎng)格的行數(shù)和列數(shù)格的行數(shù)和列數(shù)(網(wǎng)格大小一樣)。網(wǎng)格大小一樣)。setLa
21、yout(new GridLayout(行數(shù)行數(shù), 列數(shù)列數(shù));setLayout(new GridLayout(行數(shù)行數(shù), 列數(shù)列數(shù),行間隔行間隔,列間列間隔隔);n調(diào)用容器的方法調(diào)用容器的方法add()將組件加入容器,組件填入將組件加入容器,組件填入容器的順序?qū)凑盏谝恍械谝粋€(gè)格中、第一行第二容器的順序?qū)凑盏谝恍械谝粋€(gè)格中、第一行第二個(gè)格中、個(gè)格中、n每個(gè)網(wǎng)格中都必須填入組件,如果希望某個(gè)網(wǎng)格為每個(gè)網(wǎng)格中都必須填入組件,如果希望某個(gè)網(wǎng)格為空白,可以為它加入一個(gè)空的標(biāo)簽:空白,可以為它加入一個(gè)空的標(biāo)簽: add (new Label();GridLayout布局管理器布局管理器 f = n
22、ew Frame(GridLayout); f.setLayout(new GridLayout(2,3); f.setSize(200,100); f.setBackground(Color.gray); b1 = new Button(1); b6 = new Button(6); f.add(b1); f.setVisible(true);7-1f布局例布局例 Frame fm = new Frame() fm.setLayout(new FlowLayout(); tf = new TextField(22); fm.add(tf); Panel p1 = new Panel(); p
23、1.setLayout(new GridLayout(4,3); p1.add(); Panel p2 = new Panel(); p2.setLayout(new GridLayout(4,3); p2.add(); fm. add(p1); fm. add(p2);7-2布局GridBagLayout布局管理器布局管理器n每個(gè)每個(gè)GridBagLayout對(duì)象維護(hù)一個(gè)動(dòng)態(tài)矩形網(wǎng)格,對(duì)象維護(hù)一個(gè)動(dòng)態(tài)矩形網(wǎng)格,n每個(gè)組件可占據(jù)一個(gè)或多個(gè)單元作為它的顯示區(qū)域。每個(gè)組件可占據(jù)一個(gè)或多個(gè)單元作為它的顯示區(qū)域。n每一個(gè)組件都與一個(gè)每一個(gè)組件都與一個(gè)GridBagConstraints類的實(shí)例相連,類
24、的實(shí)例相連,以指定在顯示區(qū)域中如何擺放以指定在顯示區(qū)域中如何擺放,并可確定大小。并可確定大小。n步驟:步驟:v setLayout(new GridBagLayout(); v GridBagConstraints gbc = new GridBagConstraints();v gbc.gridx = 0; (屬性賦值)屬性賦值)v add(button1 , gbc )GridBagLayout布局管理器布局管理器n設(shè)置設(shè)置GridBagConstraints類實(shí)例屬性值:類實(shí)例屬性值:ngridx gridy 組件顯示區(qū)域的左上角單元格坐標(biāo)組件顯示區(qū)域的左上角單元格坐標(biāo)ngridwidt
25、h gridheight 指定顯示區(qū)域行、列單元數(shù)指定顯示區(qū)域行、列單元數(shù)nRELATIVE 指定緊挨著前一個(gè)組件擺放指定緊挨著前一個(gè)組件擺放nfill 當(dāng)顯示區(qū)域大于組件時(shí)如何擴(kuò)充組件:當(dāng)顯示區(qū)域大于組件時(shí)如何擴(kuò)充組件:vHORIZONTAL 水平充滿水平充滿 VERTICAL 垂直充滿垂直充滿 vBOTH 全部填充全部填充 NONE 不調(diào)整(隱含)不調(diào)整(隱含)nipadx ipady 指定組件間最小間隔指定組件間最小間隔 nanchor 當(dāng)顯示區(qū)域大于組件時(shí)如何擺放組件:當(dāng)顯示區(qū)域大于組件時(shí)如何擺放組件:vCENTER(隱含)(隱含), NORTH, EAST, SOUTH, WEST,
26、 vSOUTHEAST, NORTHEAST, vSOUTHWEST, NORTHWEST. CardLayout布局管理器布局管理器n將每一個(gè)組件視為一張卡片,同一時(shí)刻只能顯示一將每一個(gè)組件視為一張卡片,同一時(shí)刻只能顯示一個(gè)組件。個(gè)組件。nsetLayout(new CardLayout() nCardLayout方法(按序指定組件)方法(按序指定組件)vfirst(Container parent) vlast(Container parent)vprevious(Container parent)vnext(Container parent)nCardLayout方法方法(按名顯示組件)
27、按名顯示組件)vaddLayoutComponent(String name, Component c)vshow(Container parent, String name)事件及處理機(jī)制事件及處理機(jī)制n用戶操作用戶操作GUI組件時(shí)會(huì)引發(fā)各種事件。組件時(shí)會(huì)引發(fā)各種事件。n事件事件 :描述:描述“發(fā)生了什么事情發(fā)生了什么事情”的對(duì)象。的對(duì)象。 系統(tǒng)根據(jù)用戶的操作構(gòu)造出相應(yīng)事件類的對(duì)象。系統(tǒng)根據(jù)用戶的操作構(gòu)造出相應(yīng)事件類的對(duì)象。n事件源:事件的產(chǎn)生地。事件源:事件的產(chǎn)生地。n事件處理程序:是一個(gè)方法,它接收一個(gè)事件對(duì)象事件處理程序:是一個(gè)方法,它接收一個(gè)事件對(duì)象,分析它,并完成對(duì)該事件的處理。,
28、分析它,并完成對(duì)該事件的處理。n每個(gè)事件有一個(gè)相應(yīng)的監(jiān)聽者接口,它規(guī)定了能夠每個(gè)事件有一個(gè)相應(yīng)的監(jiān)聽者接口,它規(guī)定了能夠接收(并處理)該類事件的方法的規(guī)范。接收(并處理)該類事件的方法的規(guī)范。n監(jiān)聽者:實(shí)現(xiàn)了監(jiān)聽者接口的類,它包含有事件處監(jiān)聽者:實(shí)現(xiàn)了監(jiān)聽者接口的類,它包含有事件處理程序。理程序。n編程人員要為事件源指定監(jiān)聽者對(duì)象(即指定處理編程人員要為事件源指定監(jiān)聽者對(duì)象(即指定處理某種事件的事件處理程序監(jiān)聽者對(duì)象方法)。某種事件的事件處理程序監(jiān)聽者對(duì)象方法)。鼠標(biāo)單擊按扭事件及處理機(jī)制事件及處理機(jī)制ActionEvent事件 引發(fā)public void actionPerformed(Ac
29、tionEvent e)ActionListener接口ActionEvent事件監(jiān)聽者類監(jiān)聽者對(duì)象調(diào)用按扭的 addActionListener ( )方法,為該按扭指定監(jiān)聽者。實(shí)現(xiàn)接口事件類事件類nActionEvent類類 :存放這個(gè)事件的細(xì)節(jié)。該類的方:存放這個(gè)事件的細(xì)節(jié)。該類的方法有:法有:vgetSource() 返回事件發(fā)生的對(duì)象(名)返回事件發(fā)生的對(duì)象(名)vgetActionCommand() 返回按扭名。返回按扭名。nActionListener 接口接口vpublic void actionPerformed(ActionEvent e)圖形用戶界面例圖形用戶界面例imp
30、ort java.awt.*;import java.awt.event.*;public class a public static void main(String args) MyFrame form1 = new MyFrame(); class MyFrame extends Frame MyFrame() super(窗口標(biāo)題窗口標(biāo)題); setSize(200,100); setFont(new Font(TimesRoman,Font.BOLD,20);圖形用戶界面例圖形用戶界面例 setLayout(new FlowLayout(); Button b = new Butto
31、n(close); add(b); b.addActionListener(new Bprocess(); setVisible(true); class Bprocess implements ActionListener public void actionPerformed(ActionEvent e) System.exit(0); 監(jiān)聽者類監(jiān)聽者類n某個(gè)類可以兼職也可以專職做這件事(實(shí)現(xiàn)監(jiān)聽者某個(gè)類可以兼職也可以專職做這件事(實(shí)現(xiàn)監(jiān)聽者接口)。接口)。n一個(gè)類若實(shí)現(xiàn)一個(gè)接口,必須實(shí)現(xiàn)接口的全部方法一個(gè)類若實(shí)現(xiàn)一個(gè)接口,必須實(shí)現(xiàn)接口的全部方法。 例如:例如:ActionListener
32、接口只有一個(gè)方法:接口只有一個(gè)方法: void actionPerformed(ActionEvent e) void actionPerformed(ActionEvent e) n實(shí)現(xiàn)接口的類可以是:實(shí)現(xiàn)接口的類可以是:v一般類一般類v內(nèi)部類內(nèi)部類v匿名類匿名類7-3 一般類7-4 內(nèi)部類7-5 匿名類事件處理有關(guān)問(wèn)題事件處理有關(guān)問(wèn)題n有哪些事件類有哪些事件類 (java.awt.event) ? n每個(gè)事件類的監(jiān)聽者接口?每個(gè)事件類的監(jiān)聽者接口?n每個(gè)監(jiān)聽者接口規(guī)定的方法?每個(gè)監(jiān)聽者接口規(guī)定的方法?n多方法的監(jiān)聽者接口的適配器(實(shí)現(xiàn)接口的抽象類多方法的監(jiān)聽者接口的適配器(實(shí)現(xiàn)接口的抽象類
33、)是什么?)是什么?n組件的事件委托(注冊(cè))方法?組件的事件委托(注冊(cè))方法?窗口事件窗口事件(適配器說(shuō)明)(適配器說(shuō)明)n關(guān)閉窗口框時(shí)引發(fā)關(guān)閉窗口框時(shí)引發(fā) WindowEvent事件事件n委托:委托: addWindowListener(new Wclose();n定義監(jiān)聽者類定義監(jiān)聽者類 class Wclose implements WindowListener public void windowClosing(WindowEvent e) System.exit(0); 其他方法其他方法 窗口事件窗口事件nWindowListener類有類有7 個(gè)方法,都必須實(shí)現(xiàn)。個(gè)方法,都必須實(shí)現(xiàn)
34、。v windowActivated(WindowEvent e) v windowClosed(WindowEvent e) v windowClosing(WindowEvent e) v windowDeactivated(WindowEvent e) v windowDeiconified(WindowEvent e) v windowIconified(WindowEvent e) v windowOpened(WindowEvent e) nWindowAdapter :系統(tǒng)實(shí)現(xiàn)的處理窗口事件的抽象適配器:系統(tǒng)實(shí)現(xiàn)的處理窗口事件的抽象適配器類,用空內(nèi)容實(shí)現(xiàn)了類,用空內(nèi)容實(shí)現(xiàn)了Win
35、dowListener接口的全部接口的全部7個(gè)方法個(gè)方法。nclass Wclose extends WindowAdapter 僅須編寫需要的方法ActionEvent事件事件n引發(fā)原因:引發(fā)原因:v單擊按扭,雙擊列表框中選項(xiàng),選擇菜單項(xiàng),文本框中單擊按扭,雙擊列表框中選項(xiàng),選擇菜單項(xiàng),文本框中的回車的回車n事件監(jiān)聽接口:事件監(jiān)聽接口:ActionListenern接口方法:接口方法:vactionPerformed(ActionEvent e)n組件注冊(cè)該事件方法:組件注冊(cè)該事件方法:vaddActionListener(監(jiān)聽者對(duì)象)監(jiān)聽者對(duì)象) TextEvent事件事件n引發(fā)原因:引發(fā)
36、原因:v文本框或文本區(qū)域內(nèi)容改變文本框或文本區(qū)域內(nèi)容改變n事件監(jiān)聽接口:事件監(jiān)聽接口:TextListenern接口方法:接口方法:vtextValueChanged(TextEvent e)n組件注冊(cè)該事件方法:組件注冊(cè)該事件方法:vaddTextListener(監(jiān)聽者對(duì)象)監(jiān)聽者對(duì)象) ItemEvent事件事件n引發(fā)原因:引發(fā)原因:v改變列表框中的選中項(xiàng)改變列表框中的選中項(xiàng)v改變復(fù)選框選中狀態(tài)改變復(fù)選框選中狀態(tài)v改變下拉選單的選中項(xiàng)改變下拉選單的選中項(xiàng)n事件監(jiān)聽接口:事件監(jiān)聽接口:ItemListenern接口方法:接口方法:vitemStateChanged(ItemEvent e)
37、n組件注冊(cè)該事件方法:組件注冊(cè)該事件方法:vaddItemListener(監(jiān)聽者)監(jiān)聽者) AdjustmentEvent事件事件n引發(fā)原因:引發(fā)原因:v操作滾動(dòng)條改變滑塊位置操作滾動(dòng)條改變滑塊位置n事件監(jiān)聽接口:事件監(jiān)聽接口:AdjustmentListenern接口方法:接口方法:vadjustmentValueChanged(AdjustmentEvent e)n組件注冊(cè)該事件方法:組件注冊(cè)該事件方法:vaddAdjustmentListener(監(jiān)聽者)監(jiān)聽者) KeyEvent事件事件n引發(fā)原因:引發(fā)原因:v 敲完鍵(敲完鍵(KEY-TYPED)v 按下鍵按下鍵 (KEY-PRES
38、SED)v 釋放鍵釋放鍵 (KEY-RELEASE)n事件監(jiān)聽接口:事件監(jiān)聽接口:KeyListenern接口方法:接口方法:v keyPressed(KeyEvent e) 鍵已被按下時(shí)調(diào)用鍵已被按下時(shí)調(diào)用v keyReleased(KeyEvent e) 鍵已被釋放時(shí)調(diào)用鍵已被釋放時(shí)調(diào)用v keyTyped(KeyEvent e) 鍵已被敲完時(shí)調(diào)用鍵已被敲完時(shí)調(diào)用nKeyEvent方法:方法:char ch = e.getKeyChar(); n事件監(jiān)聽適配器(抽象類)事件監(jiān)聽適配器(抽象類)KeyAdaptern組件注冊(cè)該事件方法:組件注冊(cè)該事件方法:v addKeyListener(監(jiān)
39、聽者)監(jiān)聽者) MouseEvent事件事件n引發(fā)原因:引發(fā)原因: (鼠標(biāo)作用在一個(gè)組件上)(鼠標(biāo)作用在一個(gè)組件上)v鼠標(biāo)事件:鼠標(biāo)鍵按下,鼠標(biāo)鍵抬起,單擊鼠標(biāo)鼠標(biāo)事件:鼠標(biāo)鍵按下,鼠標(biāo)鍵抬起,單擊鼠標(biāo) ,鼠標(biāo),鼠標(biāo)光標(biāo)進(jìn)入一個(gè)組件,鼠標(biāo)光標(biāo)離開一個(gè)組件。光標(biāo)進(jìn)入一個(gè)組件,鼠標(biāo)光標(biāo)離開一個(gè)組件。v鼠標(biāo)移動(dòng)事件:鼠標(biāo)移動(dòng),鼠標(biāo)拖動(dòng)鼠標(biāo)移動(dòng)事件:鼠標(biāo)移動(dòng),鼠標(biāo)拖動(dòng) n鼠標(biāo)事件監(jiān)聽接口鼠標(biāo)事件監(jiān)聽接口1:vMouseListener 接受鼠標(biāo)事件接受鼠標(biāo)事件n該接口定義的方法:該接口定義的方法:vmouseClicked(MouseEvent e) v mouseEntered(MouseEvent
40、 e) 鼠標(biāo)光標(biāo)進(jìn)入一個(gè)組件鼠標(biāo)光標(biāo)進(jìn)入一個(gè)組件vmouseExited(MouseEvent e) 鼠標(biāo)光標(biāo)離開一個(gè)組件鼠標(biāo)光標(biāo)離開一個(gè)組件n鼠標(biāo)事件監(jiān)聽適配器(抽象類)鼠標(biāo)事件監(jiān)聽適配器(抽象類)MouseAdapterMouseEvent事件(續(xù))事件(續(xù))n鼠標(biāo)事件監(jiān)聽接口鼠標(biāo)事件監(jiān)聽接口2:vMouseMotionListener 接受鼠標(biāo)移動(dòng)事件接受鼠標(biāo)移動(dòng)事件n該接口方法:該接口方法:vmouseMoved(MouseEvent e) 鼠標(biāo)光標(biāo)在組件上移動(dòng)鼠標(biāo)光標(biāo)在組件上移動(dòng)vmouseDragged(MouseEvent e)用鼠標(biāo)拖動(dòng)一個(gè)組件用鼠標(biāo)拖動(dòng)一個(gè)組件n鼠標(biāo)移動(dòng)事件監(jiān)
41、聽適配器鼠標(biāo)移動(dòng)事件監(jiān)聽適配器 MouseMotionAdaptern組件注冊(cè)鼠標(biāo)事件方法:組件注冊(cè)鼠標(biāo)事件方法:vadd MouseListener(監(jiān)聽者)監(jiān)聽者) n組件注冊(cè)鼠標(biāo)移動(dòng)事件方法:組件注冊(cè)鼠標(biāo)移動(dòng)事件方法:vadd MouseMotionListener(監(jiān)聽者)監(jiān)聽者) MouseEvent事件(續(xù))事件(續(xù))nMouseEvent方法方法ve.getClickCount() =1 單擊單擊 =2 雙擊雙擊vPoint e.getPoint() 取鼠標(biāo)光標(biāo)位置取鼠標(biāo)光標(biāo)位置vint e.getX() int e.getY() 取鼠標(biāo)光標(biāo)位置取鼠標(biāo)光標(biāo)位置ve.getModi
42、fiers() = e.BUTTON1_MASK 鼠標(biāo)左鍵鼠標(biāo)左鍵 = e.BUTTON3_MASK 鼠標(biāo)右鍵鼠標(biāo)右鍵7-6 鼠標(biāo)事件WindowEvent事件事件n引發(fā)原因:引發(fā)原因:v有關(guān)窗口操作引發(fā)的事件有關(guān)窗口操作引發(fā)的事件n事件監(jiān)聽接口事件監(jiān)聽接口WindowListenern接口方法接口方法vwindowActivated(WindowEvent e) 激活窗口激活窗口vwindowClosed(WindowEvent e) 調(diào)用調(diào)用dispose方法關(guān)閉窗口后。方法關(guān)閉窗口后。vwindowClosing(WindowEvent e) 試圖利用窗口關(guān)閉框關(guān)閉窗口試圖利用窗口關(guān)閉框
43、關(guān)閉窗口vwindowDeactivated(WindowEvent e) 本窗口成為非活動(dòng)窗口本窗口成為非活動(dòng)窗口WindowEvent事件事件(續(xù))續(xù))vwindowDeiconified(WindowEvent e) 窗口從最小化恢復(fù)為普通窗口窗口從最小化恢復(fù)為普通窗口vwindowIconified(WindowEvent e) 窗口變?yōu)樽钚』瘓D標(biāo)窗口變?yōu)樽钚』瘓D標(biāo)vwindowOpened(WindowEvent e) 當(dāng)窗口第一次打開成為可見時(shí)當(dāng)窗口第一次打開成為可見時(shí)n接口適配器接口適配器 WindowAdaptern注冊(cè)事件方法注冊(cè)事件方法vaddWindowListenerF
44、ocusEvent事件事件n引發(fā)原因:引發(fā)原因:v組件獲得焦點(diǎn)組件獲得焦點(diǎn)v組件失去焦點(diǎn)組件失去焦點(diǎn)n事件監(jiān)聽接口事件監(jiān)聽接口 FocusListenern接口方法:接口方法:vfocusGained(FocusEvent e) 組件獲得焦點(diǎn)時(shí)調(diào)用組件獲得焦點(diǎn)時(shí)調(diào)用vfocusLost(FocusEvent e) 組件失去焦點(diǎn)時(shí)調(diào)用組件失去焦點(diǎn)時(shí)調(diào)用n接口適配器:接口適配器:FocusAdaptern組件注冊(cè)該事件方法:組件注冊(cè)該事件方法:addFocusListenerTextEvent事件事件n引發(fā)原因:引發(fā)原因:v當(dāng)組件(如文本框)文本改變時(shí)引發(fā)當(dāng)組件(如文本框)文本改變時(shí)引發(fā)n事件監(jiān)聽
45、接口:事件監(jiān)聽接口:TextListenern接口方法:接口方法:vtextValueChanged(TextEvent e)n組件注冊(cè)該事件方法:組件注冊(cè)該事件方法:vaddTextListenerComponentEvent 事件事件n引發(fā)原因:引發(fā)原因:v當(dāng)組件移動(dòng)、改變大小、改變可見性時(shí)引發(fā)當(dāng)組件移動(dòng)、改變大小、改變可見性時(shí)引發(fā)n事件監(jiān)聽接口:事件監(jiān)聽接口:ComponentListenern接口方法:接口方法:vcomponentHidden(ComponentEvent e) 組件隱藏組件隱藏vcomponentMoved(ComponentEvent e) 組件移動(dòng)組件移動(dòng)vco
46、mponentResized(ComponentEvent e)組件改變大小組件改變大小vcomponentShown(ComponentEvent e) 組件變?yōu)榭梢娊M件變?yōu)榭梢妌接口適配器接口適配器 ComponentAdaptern組件注冊(cè)該事件方法:組件注冊(cè)該事件方法:vaddComponentListenerContainerEvent 事件事件n引發(fā)原因:引發(fā)原因:v當(dāng)容器內(nèi)增加或移走組件時(shí)引發(fā)當(dāng)容器內(nèi)增加或移走組件時(shí)引發(fā)n事件監(jiān)聽接口:事件監(jiān)聽接口:ContainerListenern接口方法接口方法vcomponentAdded(ContainerEvent e) 容器內(nèi)加入組
47、件容器內(nèi)加入組件vcomponentRemoved(ContainerEvent e) 從容器中移從容器中移走組件走組件n接口適配器接口適配器 ContainerAdaptern容器注冊(cè)該事件方法:容器注冊(cè)該事件方法:vaddContainerListener標(biāo)準(zhǔn)組件簡(jiǎn)介標(biāo)準(zhǔn)組件簡(jiǎn)介nLabel(標(biāo)簽標(biāo)簽)v構(gòu)造函數(shù)構(gòu)造函數(shù)Label a = new Label(“information”);Label a = new Label(“information”,Label.CENTER);v方法方法a.setText(“新內(nèi)容新內(nèi)容”); 設(shè)置標(biāo)簽內(nèi)容設(shè)置標(biāo)簽內(nèi)容String a.getText
48、() 讀取標(biāo)簽內(nèi)容讀取標(biāo)簽內(nèi)容nButton(按鈕按鈕)vButton myB = new Button(“Cancel”);Checkbox組件組件n構(gòu)造函數(shù)構(gòu)造函數(shù)vCheckbox(String label)vCheckbox(String label, boolean state)vCheckbox(String label, boolean state, CheckboxGroup group ) n方法:方法:vboolean getState()vsetState(boolean state)CheckboxGroup組件組件n將一組將一組CheckboxCheckbox 按扭組
49、成單選按扭組件。按扭組成單選按扭組件。n例例setLayout(new GridLayout(3, 1); setLayout(new GridLayout(3, 1); CheckboxGroup cbg = new CheckboxGroup();CheckboxGroup cbg = new CheckboxGroup();Checkbox ck1 = new Checkbox(Checkbox ck1 = new Checkbox(“oneone”, true, cbg );, true, cbg );Checkbox ck2 = new Checkbox(Checkbox ck2 =
50、 new Checkbox(“twotwo”, false, cbg );, false, cbg );Checkbox ck3 = new Checkbox(Checkbox ck3 = new Checkbox(“threethree”, false, cbg );, false, cbg );n方法:方法:vCheckbox getSelectedCheckbox()Checkbox getSelectedCheckbox()vsetSelectedCheckbox(CheckboxsetSelectedCheckbox(Checkbox box)box)TextField行編輯框組件行
51、編輯框組件n構(gòu)造函數(shù)構(gòu)造函數(shù)vTextField f1 = new TextField(30);vTextField f1 = new TextField(“abc”,30);v建建30個(gè)字符寬的行編輯框個(gè)字符寬的行編輯框n方法:方法:v String getText() 讀文本框內(nèi)容讀文本框內(nèi)容v setText(“abc”) 設(shè)置編輯框內(nèi)容設(shè)置編輯框內(nèi)容v setEchoChar(char c) 設(shè)置回顯字符設(shè)置回顯字符nTextComponent 方法:方法:vsetEditable(false); vselectAll() 7-7 計(jì)算器TextArea編輯框組件編輯框組件n構(gòu)造函數(shù)構(gòu)
52、造函數(shù)vTextArea ta1 = new TestArea(10,45); 建建10行、行、45列的文本區(qū)域列的文本區(qū)域vTextArea ta1 = new TestArea(“abc”,10,45);vTextArea ta1 = new TestArea(“abc”,10,45,滾動(dòng)條,滾動(dòng)條);n滾動(dòng)條指定滾動(dòng)條指定vSCROLLBARS_BOTH vSCROLLBARS_HORIZONTAL_ONLYvSCROLLBARS_VERTICAL_ONLYvSCROLLBARS_NONEn方法方法vappend(String str) 追加文本追加文本List 列表框列表框n首先創(chuàng)建首
53、先創(chuàng)建List對(duì)象,再調(diào)用對(duì)象,再調(diào)用add ()方法加入方法加入List列表列表的各選項(xiàng)的各選項(xiàng)n構(gòu)造函數(shù)構(gòu)造函數(shù)vList(int rows, boolean multipleMode) rows 顯示行數(shù)顯示行數(shù) ; multipleMode 是否允許多選是否允許多選n方法:方法:vlist1.add (“class A”);vlist1.add (“class B”);vlist1.add (“class C” , 0); 指定加入選項(xiàng)位置指定加入選項(xiàng)位置List 列表框列表框n方法方法vint getSelectedIndex() 取被選項(xiàng)索引取被選項(xiàng)索引vint getSelect
54、edIndexes() 取被選項(xiàng)索引(多選)取被選項(xiàng)索引(多選)vString getSelectedItem() 取被選項(xiàng)取被選項(xiàng)vString getSelectedItems() 取被選項(xiàng)(多選)取被選項(xiàng)(多選)vvoid select(int index) 選中指定的項(xiàng)選中指定的項(xiàng)vString getItem(int index) 按索引號(hào)取出該項(xiàng)按索引號(hào)取出該項(xiàng)vint getItemCount() 取出項(xiàng)數(shù)取出項(xiàng)數(shù)vString getItems( ) 取出所有的項(xiàng)取出所有的項(xiàng)Choice下拉選單下拉選單例例 Choice ColorChooser = new Choice();
55、 Choice ColorChooser = new Choice(); ColorChooser.add(Green); ColorChooser.add(Green); ColorChooser.add(Red); ColorChooser.add(Red); ColorChooser.add(Blue); ColorChooser.add(Blue); String getSelectedItem() String getSelectedItem() GreenScrollbar 滾動(dòng)條滾動(dòng)條n構(gòu)造函數(shù)構(gòu)造函數(shù)mySlider = new Scrollbar(Scrollbar.HORI
56、ZONTAL , 0 , 1 , 0 , Integer.MAX_VALUE); v滾動(dòng)條方向滾動(dòng)條方向v滑塊初始位置滑塊初始位置v滑塊尺寸滑塊尺寸v滾動(dòng)槽最小值滾動(dòng)槽最小值v滾動(dòng)槽最大值滾動(dòng)槽最大值n方法方法vint getValue() 返回滑塊當(dāng)前位置返回滑塊當(dāng)前位置vsetUnitIncrement(1); 設(shè)置單位增量(點(diǎn)按兩端箭頭)設(shè)置單位增量(點(diǎn)按兩端箭頭)vsetBlockIncrement(50); 設(shè)置塊增量(點(diǎn)按滾動(dòng)槽)設(shè)置塊增量(點(diǎn)按滾動(dòng)槽)7-8 滾動(dòng)條菜單菜單n創(chuàng)建菜單條(創(chuàng)建菜單條(MenuBar)MenuBar m_MenuBar = new MenuBar(); n創(chuàng)建菜單(創(chuàng)建菜單(Menu),加入菜單條),加入菜單條Menu menuFile = new Menu(“File”); /創(chuàng)建菜單創(chuàng)建菜單m_MenuBar.add(menuFile); /將菜單加入菜單條將菜單加入菜單條n創(chuàng)建菜單項(xiàng)(創(chuàng)建菜單項(xiàng)(MenuItem) 加入相應(yīng)菜單加入相應(yīng)菜單MenuItem f1 = new MenuItem(“Open”), /創(chuàng)建各菜單項(xiàng)創(chuàng)建各菜單項(xiàng)MenuItem f2 = new MenuItem(Close),menuFile.add(f1); /加入菜單加入菜單menuFile.ad
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- HY/T 0460.6-2024海岸帶生態(tài)系統(tǒng)現(xiàn)狀調(diào)查與評(píng)估技術(shù)導(dǎo)則第6部分:海草床
- NB/T 11628-2024煤礦用道岔控制裝置通用技術(shù)條件
- 2025年危機(jī)管理與應(yīng)急處理考試題及答案
- 幼數(shù)學(xué)試試題及答案
- 青海省申論試題及答案
- 西方政府的應(yīng)急響應(yīng)能力試題及答案
- 軟考網(wǎng)絡(luò)工程師模擬復(fù)習(xí)試題及答案
- 如何提升公共政策的實(shí)施效率試題及答案
- 網(wǎng)絡(luò)架構(gòu)規(guī)劃細(xì)節(jié)試題及答案
- 機(jī)電工程考試案例分析及試題與答案分享
- 五下語(yǔ)文第五單元測(cè)試卷及答案
- 5.1基因突變和基因重組課件-高一下學(xué)期生物人教版必修2
- 2025年教師職業(yè)道德與法規(guī)考試試題及答案
- DB65∕T 3420-2012 瑪納斯碧玉(標(biāo)準(zhǔn)規(guī)范)
- 企業(yè)戰(zhàn)略規(guī)劃與盈利模式創(chuàng)新研究
- 浙江省溫州市環(huán)大羅山聯(lián)盟2024-2025學(xué)年高一下學(xué)期期中考試 英語(yǔ) PDF版含答案
- 北森領(lǐng)導(dǎo)測(cè)評(píng)試題及答案
- 2025年綿陽(yáng)富樂(lè)中學(xué)小升初數(shù)學(xué)、語(yǔ)文入學(xué)考試題
- 考研項(xiàng)目合同協(xié)議模板
- 砼攪拌站安裝、拆卸工程安全技術(shù)交底
- 工業(yè)自動(dòng)化設(shè)備維護(hù)與保養(yǎng)手冊(cè)
評(píng)論
0/150
提交評(píng)論