7-圖形用戶界面設計與實現(xiàn)68276_第1頁
7-圖形用戶界面設計與實現(xiàn)68276_第2頁
7-圖形用戶界面設計與實現(xiàn)68276_第3頁
7-圖形用戶界面設計與實現(xiàn)68276_第4頁
7-圖形用戶界面設計與實現(xiàn)68276_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、圖形用戶界面的設計與實現(xiàn)圖形用戶界面的設計與實現(xiàn)教材第教材第7章章 設計原則 容器與布局 標準組件 事件處理 自定義成分用戶界面設計原則用戶界面設計原則n使用圖形界面使用圖形界面GUI (Graphics User Interface)v字符界面字符界面采用命令行方式與用戶交互。采用命令行方式與用戶交互。v圖形界面圖形界面用多種媒體顯示信息,用直觀、方便的用多種媒體顯示信息,用直觀、方便的GUI標標準組件來接收命令。準組件來接收命令。n控制權在用戶(用戶要由操作的主動權)控制權在用戶(用戶要由操作的主動權)n界面與操作的風格一致性。界面與操作的風格一致性。n寬容(容錯)性。寬容(容錯)性。n簡

2、潔與美觀并重。簡潔與美觀并重。界面構成界面構成容器標準組件用戶自定義成分v創(chuàng)建GUI各組成成分,并安排相互 位置關系(包含,相鄰,相交)。v定義GUI各成分對不同事件的響應, 實現(xiàn)與用戶的交互與界面功能。界面元素界面元素n容器是用來組織其他界面成分和元素的單元。容器是用來組織其他界面成分和元素的單元。v可以形成容器的層次,構筑復雜結構可以形成容器的層次,構筑復雜結構vWindow(Frame、Applet、Dialog )n組件是圖形用戶界面的基本單位,它里面不再包含組件是圖形用戶界面的基本單位,它里面不再包含其他的成分。其他的成分。vGUI組件是圖形用戶界面標準化的結果。組件是圖形用戶界面標

3、準化的結果。vGUI組件的作用是完成與用戶的交互。組件的作用是完成與用戶的交互。n用戶自定義成分用戶自定義成分v文字、圖形、圖象文字、圖形、圖象v不能像標準組件一樣被系統(tǒng)識別和承認,只起裝飾作用不能像標準組件一樣被系統(tǒng)識別和承認,只起裝飾作用。v不能響應用戶的動作,不具有交互功能。不能響應用戶的動作,不具有交互功能。AWT包包nAbstract Windows Toolkit(抽象窗口工具)(抽象窗口工具)vAWT類庫中的各種操作是被定義為在一個并不存在的類庫中的各種操作是被定義為在一個并不存在的“抽象窗口抽象窗口”中進行的。中進行的。v抽取不同軟硬件平臺中所實現(xiàn)的窗口的公共特性。抽取不同軟硬

4、件平臺中所實現(xiàn)的窗口的公共特性。v所設計的界面獨立于具體的界面實現(xiàn)所設計的界面獨立于具體的界面實現(xiàn) 。n提供與機器無關的基本提供與機器無關的基本GUI標準組件。標準組件。v選擇類組件:選擇類組件: 單選按鈕、復選框、下拉選單、列表框單選按鈕、復選框、下拉選單、列表框v文字處理類組件:文字處理類組件: 標簽、文本框、編輯框標簽、文本框、編輯框v命令類組件:命令類組件: 按鈕、工具欄、菜單按鈕、工具欄、菜單AWT類層次關系圖類層次關系圖Component Container Panel Applet Window Frame Dialog ButtonTextFieldTextAreaTextCo

5、mponentCheckboxMenuComponentMenuMenuItemMenuBar其他組件獨立不獨立Component類類可顯示在屏幕上的圖形對象,可與用戶交互??娠@示在屏幕上的圖形對象,可與用戶交互。n方法:方法:vadd(PopupMenuadd(PopupMenu popup) popup) 加一彈出菜單加一彈出菜單vaddFocusListener(FocusListeneraddFocusListener(FocusListener l) l)將發(fā)生在本組件上的將發(fā)生在本組件上的事件注冊給監(jiān)聽者,以進行事件處理。事件注冊給監(jiān)聽者,以進行事件處理。vsetSize(ints

6、etSize(int width, intwidth, int height) height) 設置組件尺寸設置組件尺寸vpainpaint(Graphics(Graphics g) g) 重畫組件重畫組件vsetFont(FontsetFont(Font f) f) 設置組件字體設置組件字體vsetBackground(ColorsetBackground(Color c) c) 設置組件背景色設置組件背景色vsetForeground(ColorsetForeground(Color c) c) 設置組件前景色設置組件前景色paint和和repaint 方法方法n某組件的某組件的paint

7、()和和 update()為系統(tǒng)自動調用的有關為系統(tǒng)自動調用的有關圖形繪制的方法,不可人為編程調用;但可圖形繪制的方法,不可人為編程調用;但可編程重編程重新定義其操作內容。新定義其操作內容。n使用使用repaint()方法可以觸發(fā)方法可以觸發(fā)update()方法。方法。paint( )當某些操作破壞了顯示,需重新繪制時第一次繪制repaint()編程控制1. 擦除并填充成背景色update()調用2. 調用paint()Font類類njava.awt.Font n設計字體顯示效果(創(chuàng)建字體對象)設計字體顯示效果(創(chuàng)建字體對象)Font fn = new Font(String 字體,字體,in

8、t 風格,風格,int 字號字號);v字體:字體:TimesRoman, Courier, Arial等等v風格:三個常量風格:三個常量Font.PLAIN, Font.BOLD, Font.ITALICv字號:字的大小(磅數(shù))字號:字的大?。ò鯏?shù))n使用字體對象使用字體對象 如設置某組件當前使用的字體:如設置某組件當前使用的字體:setFont(Font fn)n獲取組件當前使用的字體:獲取組件當前使用的字體:getFont()Color類類構造函數(shù)構造函數(shù)1(設置顏色)(設置顏色) Color c = new Color(int red, int green, int blue) 范圍范圍

9、 :0255 new Color(200,200,200) new Color(255,0,100)n構造函數(shù)構造函數(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 不需要其他組件支撐,獨立顯示。

10、不需要其他組件支撐,獨立顯示。vFrame vDialog 沒有菜單條,不能改變大小沒有菜單條,不能改變大小nPanel 必須放在必須放在Window組件中(或組件中(或Web瀏覽瀏覽器窗口)才能顯示。它為一矩形區(qū)域,在其中可擺器窗口)才能顯示。它為一矩形區(qū)域,在其中可擺放其他組件,可以有自己的布局管理器。放其他組件,可以有自己的布局管理器。n基本方法基本方法vadd(Component comp) 將指定組件放到容器中將指定組件放到容器中vadd(Component comp,int index)vremove(Component comp) 刪除指定組件刪除指定組件vsetLayout(L

11、ayoutManager mgr) 設置容器布局設置容器布局vpaint 畫容器(及其上面的組件)畫容器(及其上面的組件)容器的組件布局容器的組件布局n依靠布局管理器(依靠布局管理器(layout manager)方式方式v調用容器的調用容器的setLayout方法,為容器指定某種布局管理器方法,為容器指定某種布局管理器的一個對象。的一個對象。 例:例: setLayout(new FlowLayout() ) v該布局管理器對象負責確定容器中組件的位置和大小。該布局管理器對象負責確定容器中組件的位置和大小。v當容器需要定位組件和確定組件大小時,就會給布局管當容器需要定位組件和確定組件大小時,

12、就會給布局管理器對象發(fā)消息,讓它完成該項工作。理器對象發(fā)消息,讓它完成該項工作。n直接管理組件方式直接管理組件方式v調用容器的調用容器的 setLayout(null) 方法,關閉布局管理器。方法,關閉布局管理器。v調用每一個組件的調用每一個組件的setLocation()方法決定組件位置。方法決定組件位置。v調用每一個組件的調用每一個組件的setSize()方法決定其大小。方法決定其大小。n直接管理組件將失去平臺無關性。直接管理組件將失去平臺無關性。布局管理器對象布局管理器種類布局管理器種類nFlowLayout: 組件在一行中從左至右水平排列,排組件在一行中從左至右水平排列,排滿后折行滿后

13、折行nBorderLayout:北、南、東、西、中:北、南、東、西、中nGridLayout:以行和列的網(wǎng)格形式安排組件以行和列的網(wǎng)格形式安排組件nGridBagLayout:更復雜、功能更強的網(wǎng)格布局更復雜、功能更強的網(wǎng)格布局nCardLayout:每一個組件作為一個卡片,容器僅每一個組件作為一個卡片,容器僅顯示多個卡片中的某一個顯示多個卡片中的某一個確定容器布局確定容器布局n缺缺省的布局管理器省的布局管理器vWindow 、Frame、Dialog BorderLayoutvPanel 、Applet FlowLayout:n選擇布局管理器的方法選擇布局管理器的方法v建立布局管理器類的對象

14、建立布局管理器類的對象v利用容器的利用容器的 setLayout 為容器指定布局(即指定一個布為容器指定布局(即指定一個布局管理器的對象)局管理器的對象)例:將例:將myFrame布局設定為布局設定為FlowLayout類型類型 myFrame.setLayout(new FlowLayout();FramenFrame(String title) 構造一個新的不可見的構造一個新的不可見的framen隱含的布局管理器是:隱含的布局管理器是:BorderLayoutnsetLayout() 設置新的布局管理器。設置新的布局管理器。nadd(Component comp) 在容器上增加一個組件(在

15、容器為不可見的狀態(tài)時在容器上增加一個組件(在容器為不可見的狀態(tài)時加)。加)。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構造函數(shù):構造函數(shù):vFlowLayout() ;vFlowLayout(int align, int hgap, int vgap);align :對齊方式:對齊方式:LEFT CENTER RIGHThgap :組件水平間距:組件水平間距 (象素)(象素)vgap :組件垂直間距(象素):組件垂直間距(象素)n無參數(shù)的構造函數(shù)創(chuàng)建的無參數(shù)的構造函數(shù)創(chuàng)建的FlowLayout對象,其對齊對象,其對齊方式為方式為CENTER居中方式,組件間的橫縱間距

17、都為居中方式,組件間的橫縱間距都為5個像素。個像素。 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當容器大小改變,組件相對位置不會改變。當容器大小改變,組件相對位置不會改變。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對象作為布局編輯器,指定劃分網(wǎng)對象作為布局編輯器,指定劃分網(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調用容器的方法調用容器的方法add()將組件加入容器,組件填入將組件加入容器,組件填入容器的順序將按照第一行第一個格中、第一行第二容器的順序將按照第一行第一個格中、第一行第二個格中、個格中、n每個網(wǎng)格中都必須填入組件,如果希望某個網(wǎng)格為每個網(wǎng)格中都必須填入組件,如果希望某個網(wǎng)格為空白,可以為它加入一個空的標簽:空白,可以為它加入一個空的標簽: 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每個每個GridBagLayout對象維護一個動態(tài)矩形網(wǎng)格,對象維護一個動態(tài)矩形網(wǎng)格,n每個組件可占據(jù)一個或多個單元作為它的顯示區(qū)域。每個組件可占據(jù)一個或多個單元作為它的顯示區(qū)域。n每一個組件都與一個每一個組件都與一個GridBagConstraints類的實例相連,類

24、的實例相連,以指定在顯示區(qū)域中如何擺放以指定在顯示區(qū)域中如何擺放,并可確定大小。并可確定大小。n步驟:步驟:v setLayout(new GridBagLayout(); v GridBagConstraints gbc = new GridBagConstraints();v gbc.gridx = 0; (屬性賦值)屬性賦值)v add(button1 , gbc )GridBagLayout布局管理器布局管理器n設置設置GridBagConstraints類實例屬性值:類實例屬性值:ngridx gridy 組件顯示區(qū)域的左上角單元格坐標組件顯示區(qū)域的左上角單元格坐標ngridwidt

25、h gridheight 指定顯示區(qū)域行、列單元數(shù)指定顯示區(qū)域行、列單元數(shù)nRELATIVE 指定緊挨著前一個組件擺放指定緊挨著前一個組件擺放nfill 當顯示區(qū)域大于組件時如何擴充組件:當顯示區(qū)域大于組件時如何擴充組件:vHORIZONTAL 水平充滿水平充滿 VERTICAL 垂直充滿垂直充滿 vBOTH 全部填充全部填充 NONE 不調整(隱含)不調整(隱含)nipadx ipady 指定組件間最小間隔指定組件間最小間隔 nanchor 當顯示區(qū)域大于組件時如何擺放組件:當顯示區(qū)域大于組件時如何擺放組件:vCENTER(隱含)(隱含), NORTH, EAST, SOUTH, WEST,

26、 vSOUTHEAST, NORTHEAST, vSOUTHWEST, NORTHWEST. CardLayout布局管理器布局管理器n將每一個組件視為一張卡片,同一時刻只能顯示一將每一個組件視為一張卡片,同一時刻只能顯示一個組件。個組件。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)事件及處理機制事件及處理機制n用戶操作用戶操作GUI組件時會引發(fā)各種事件。組件時會引發(fā)各種事件。n事件事件 :描述:描述“發(fā)生了什么事情發(fā)生了什么事情”的對象。的對象。 系統(tǒng)根據(jù)用戶的操作構造出相應事件類的對象。系統(tǒng)根據(jù)用戶的操作構造出相應事件類的對象。n事件源:事件的產(chǎn)生地。事件源:事件的產(chǎn)生地。n事件處理程序:是一個方法,它接收一個事件對象事件處理程序:是一個方法,它接收一個事件對象,分析它,并完成對該事件的處理。,

28、分析它,并完成對該事件的處理。n每個事件有一個相應的監(jiān)聽者接口,它規(guī)定了能夠每個事件有一個相應的監(jiān)聽者接口,它規(guī)定了能夠接收(并處理)該類事件的方法的規(guī)范。接收(并處理)該類事件的方法的規(guī)范。n監(jiān)聽者:實現(xiàn)了監(jiān)聽者接口的類,它包含有事件處監(jiān)聽者:實現(xiàn)了監(jiān)聽者接口的類,它包含有事件處理程序。理程序。n編程人員要為事件源指定監(jiān)聽者對象(即指定處理編程人員要為事件源指定監(jiān)聽者對象(即指定處理某種事件的事件處理程序監(jiān)聽者對象方法)。某種事件的事件處理程序監(jiān)聽者對象方法)。鼠標單擊按扭事件及處理機制事件及處理機制ActionEvent事件 引發(fā)public void actionPerformed(Ac

29、tionEvent e)ActionListener接口ActionEvent事件監(jiān)聽者類監(jiān)聽者對象調用按扭的 addActionListener ( )方法,為該按扭指定監(jiān)聽者。實現(xiàn)接口事件類事件類nActionEvent類類 :存放這個事件的細節(jié)。該類的方:存放這個事件的細節(jié)。該類的方法有:法有:vgetSource() 返回事件發(fā)生的對象(名)返回事件發(fā)生的對象(名)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(窗口標題窗口標題); 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某個類可以兼職也可以專職做這件事(實現(xiàn)監(jiān)聽者某個類可以兼職也可以專職做這件事(實現(xiàn)監(jiān)聽者接口)。接口)。n一個類若實現(xiàn)一個接口,必須實現(xiàn)接口的全部方法一個類若實現(xiàn)一個接口,必須實現(xiàn)接口的全部方法。 例如:例如:ActionListener

32、接口只有一個方法:接口只有一個方法: void actionPerformed(ActionEvent e) void actionPerformed(ActionEvent e) n實現(xiàn)接口的類可以是:實現(xiàn)接口的類可以是:v一般類一般類v內部類內部類v匿名類匿名類7-3 一般類7-4 內部類7-5 匿名類事件處理有關問題事件處理有關問題n有哪些事件類有哪些事件類 (java.awt.event) ? n每個事件類的監(jiān)聽者接口?每個事件類的監(jiān)聽者接口?n每個監(jiān)聽者接口規(guī)定的方法?每個監(jiān)聽者接口規(guī)定的方法?n多方法的監(jiān)聽者接口的適配器(實現(xiàn)接口的抽象類多方法的監(jiān)聽者接口的適配器(實現(xiàn)接口的抽象類

33、)是什么?)是什么?n組件的事件委托(注冊)方法?組件的事件委托(注冊)方法?窗口事件窗口事件(適配器說明)(適配器說明)n關閉窗口框時引發(fā)關閉窗口框時引發(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 個方法,都必須實現(xiàn)。個方法,都必須實現(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)實現(xiàn)的處理窗口事件的抽象適配器:系統(tǒng)實現(xiàn)的處理窗口事件的抽象適配器類,用空內容實現(xiàn)了類,用空內容實現(xiàn)了Win

35、dowListener接口的全部接口的全部7個方法個方法。nclass Wclose extends WindowAdapter 僅須編寫需要的方法ActionEvent事件事件n引發(fā)原因:引發(fā)原因:v單擊按扭,雙擊列表框中選項,選擇菜單項,文本框中單擊按扭,雙擊列表框中選項,選擇菜單項,文本框中的回車的回車n事件監(jiān)聽接口:事件監(jiān)聽接口:ActionListenern接口方法:接口方法:vactionPerformed(ActionEvent e)n組件注冊該事件方法:組件注冊該事件方法:vaddActionListener(監(jiān)聽者對象)監(jiān)聽者對象) TextEvent事件事件n引發(fā)原因:引發(fā)

36、原因:v文本框或文本區(qū)域內容改變文本框或文本區(qū)域內容改變n事件監(jiān)聽接口:事件監(jiān)聽接口:TextListenern接口方法:接口方法:vtextValueChanged(TextEvent e)n組件注冊該事件方法:組件注冊該事件方法:vaddTextListener(監(jiān)聽者對象)監(jiān)聽者對象) ItemEvent事件事件n引發(fā)原因:引發(fā)原因:v改變列表框中的選中項改變列表框中的選中項v改變復選框選中狀態(tài)改變復選框選中狀態(tài)v改變下拉選單的選中項改變下拉選單的選中項n事件監(jiān)聽接口:事件監(jiān)聽接口:ItemListenern接口方法:接口方法:vitemStateChanged(ItemEvent e)

37、n組件注冊該事件方法:組件注冊該事件方法:vaddItemListener(監(jiān)聽者)監(jiān)聽者) AdjustmentEvent事件事件n引發(fā)原因:引發(fā)原因:v操作滾動條改變滑塊位置操作滾動條改變滑塊位置n事件監(jiān)聽接口:事件監(jiān)聽接口:AdjustmentListenern接口方法:接口方法:vadjustmentValueChanged(AdjustmentEvent e)n組件注冊該事件方法:組件注冊該事件方法: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) 鍵已被按下時調用鍵已被按下時調用v keyReleased(KeyEvent e) 鍵已被釋放時調用鍵已被釋放時調用v keyTyped(KeyEvent e) 鍵已被敲完時調用鍵已被敲完時調用nKeyEvent方法:方法:char ch = e.getKeyChar(); n事件監(jiān)聽適配器(抽象類)事件監(jiān)聽適配器(抽象類)KeyAdaptern組件注冊該事件方法:組件注冊該事件方法:v addKeyListener(監(jiān)

39、聽者)監(jiān)聽者) MouseEvent事件事件n引發(fā)原因:引發(fā)原因: (鼠標作用在一個組件上)(鼠標作用在一個組件上)v鼠標事件:鼠標鍵按下,鼠標鍵抬起,單擊鼠標鼠標事件:鼠標鍵按下,鼠標鍵抬起,單擊鼠標 ,鼠標,鼠標光標進入一個組件,鼠標光標離開一個組件。光標進入一個組件,鼠標光標離開一個組件。v鼠標移動事件:鼠標移動,鼠標拖動鼠標移動事件:鼠標移動,鼠標拖動 n鼠標事件監(jiān)聽接口鼠標事件監(jiān)聽接口1:vMouseListener 接受鼠標事件接受鼠標事件n該接口定義的方法:該接口定義的方法:vmouseClicked(MouseEvent e) v mouseEntered(MouseEvent

40、 e) 鼠標光標進入一個組件鼠標光標進入一個組件vmouseExited(MouseEvent e) 鼠標光標離開一個組件鼠標光標離開一個組件n鼠標事件監(jiān)聽適配器(抽象類)鼠標事件監(jiān)聽適配器(抽象類)MouseAdapterMouseEvent事件(續(xù))事件(續(xù))n鼠標事件監(jiān)聽接口鼠標事件監(jiān)聽接口2:vMouseMotionListener 接受鼠標移動事件接受鼠標移動事件n該接口方法:該接口方法:vmouseMoved(MouseEvent e) 鼠標光標在組件上移動鼠標光標在組件上移動vmouseDragged(MouseEvent e)用鼠標拖動一個組件用鼠標拖動一個組件n鼠標移動事件監(jiān)

41、聽適配器鼠標移動事件監(jiān)聽適配器 MouseMotionAdaptern組件注冊鼠標事件方法:組件注冊鼠標事件方法:vadd MouseListener(監(jiān)聽者)監(jiān)聽者) n組件注冊鼠標移動事件方法:組件注冊鼠標移動事件方法:vadd MouseMotionListener(監(jiān)聽者)監(jiān)聽者) MouseEvent事件(續(xù))事件(續(xù))nMouseEvent方法方法ve.getClickCount() =1 單擊單擊 =2 雙擊雙擊vPoint e.getPoint() 取鼠標光標位置取鼠標光標位置vint e.getX() int e.getY() 取鼠標光標位置取鼠標光標位置ve.getModi

42、fiers() = e.BUTTON1_MASK 鼠標左鍵鼠標左鍵 = e.BUTTON3_MASK 鼠標右鍵鼠標右鍵7-6 鼠標事件WindowEvent事件事件n引發(fā)原因:引發(fā)原因:v有關窗口操作引發(fā)的事件有關窗口操作引發(fā)的事件n事件監(jiān)聽接口事件監(jiān)聽接口WindowListenern接口方法接口方法vwindowActivated(WindowEvent e) 激活窗口激活窗口vwindowClosed(WindowEvent e) 調用調用dispose方法關閉窗口后。方法關閉窗口后。vwindowClosing(WindowEvent e) 試圖利用窗口關閉框關閉窗口試圖利用窗口關閉框

43、關閉窗口vwindowDeactivated(WindowEvent e) 本窗口成為非活動窗口本窗口成為非活動窗口WindowEvent事件事件(續(xù))續(xù))vwindowDeiconified(WindowEvent e) 窗口從最小化恢復為普通窗口窗口從最小化恢復為普通窗口vwindowIconified(WindowEvent e) 窗口變?yōu)樽钚』瘓D標窗口變?yōu)樽钚』瘓D標vwindowOpened(WindowEvent e) 當窗口第一次打開成為可見時當窗口第一次打開成為可見時n接口適配器接口適配器 WindowAdaptern注冊事件方法注冊事件方法vaddWindowListenerF

44、ocusEvent事件事件n引發(fā)原因:引發(fā)原因:v組件獲得焦點組件獲得焦點v組件失去焦點組件失去焦點n事件監(jiān)聽接口事件監(jiān)聽接口 FocusListenern接口方法:接口方法:vfocusGained(FocusEvent e) 組件獲得焦點時調用組件獲得焦點時調用vfocusLost(FocusEvent e) 組件失去焦點時調用組件失去焦點時調用n接口適配器:接口適配器:FocusAdaptern組件注冊該事件方法:組件注冊該事件方法:addFocusListenerTextEvent事件事件n引發(fā)原因:引發(fā)原因:v當組件(如文本框)文本改變時引發(fā)當組件(如文本框)文本改變時引發(fā)n事件監(jiān)聽

45、接口:事件監(jiān)聽接口:TextListenern接口方法:接口方法:vtextValueChanged(TextEvent e)n組件注冊該事件方法:組件注冊該事件方法:vaddTextListenerComponentEvent 事件事件n引發(fā)原因:引發(fā)原因:v當組件移動、改變大小、改變可見性時引發(fā)當組件移動、改變大小、改變可見性時引發(fā)n事件監(jiān)聽接口:事件監(jiān)聽接口:ComponentListenern接口方法:接口方法:vcomponentHidden(ComponentEvent e) 組件隱藏組件隱藏vcomponentMoved(ComponentEvent e) 組件移動組件移動vco

46、mponentResized(ComponentEvent e)組件改變大小組件改變大小vcomponentShown(ComponentEvent e) 組件變?yōu)榭梢娊M件變?yōu)榭梢妌接口適配器接口適配器 ComponentAdaptern組件注冊該事件方法:組件注冊該事件方法:vaddComponentListenerContainerEvent 事件事件n引發(fā)原因:引發(fā)原因:v當容器內增加或移走組件時引發(fā)當容器內增加或移走組件時引發(fā)n事件監(jiān)聽接口:事件監(jiān)聽接口:ContainerListenern接口方法接口方法vcomponentAdded(ContainerEvent e) 容器內加入組

47、件容器內加入組件vcomponentRemoved(ContainerEvent e) 從容器中移從容器中移走組件走組件n接口適配器接口適配器 ContainerAdaptern容器注冊該事件方法:容器注冊該事件方法:vaddContainerListener標準組件簡介標準組件簡介nLabel(標簽標簽)v構造函數(shù)構造函數(shù)Label a = new Label(“information”);Label a = new Label(“information”,Label.CENTER);v方法方法a.setText(“新內容新內容”); 設置標簽內容設置標簽內容String a.getText

48、() 讀取標簽內容讀取標簽內容nButton(按鈕按鈕)vButton myB = new Button(“Cancel”);Checkbox組件組件n構造函數(shù)構造函數(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構造函數(shù)構造函數(shù)vTextField f1 = new TextField(30);vTextField f1 = new TextField(“abc”,30);v建建30個字符寬的行編輯框個字符寬的行編輯框n方法:方法:v String getText() 讀文本框內容讀文本框內容v setText(“abc”) 設置編輯框內容設置編輯框內容v setEchoChar(char c) 設置回顯字符設置回顯字符nTextComponent 方法:方法:vsetEditable(false); vselectAll() 7-7 計算器TextArea編輯框組件編輯框組件n構造函數(shù)構

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,滾動條,滾動條);n滾動條指定滾動條指定vSCROLLBARS_BOTH vSCROLLBARS_HORIZONTAL_ONLYvSCROLLBARS_VERTICAL_ONLYvSCROLLBARS_NONEn方法方法vappend(String str) 追加文本追加文本List 列表框列表框n首先創(chuàng)建首

53、先創(chuàng)建List對象,再調用對象,再調用add ()方法加入方法加入List列表列表的各選項的各選項n構造函數(shù)構造函數(shù)vList(int rows, boolean multipleMode) rows 顯示行數(shù)顯示行數(shù) ; multipleMode 是否允許多選是否允許多選n方法:方法:vlist1.add (“class A”);vlist1.add (“class B”);vlist1.add (“class C” , 0); 指定加入選項位置指定加入選項位置List 列表框列表框n方法方法vint getSelectedIndex() 取被選項索引取被選項索引vint getSelect

54、edIndexes() 取被選項索引(多選)取被選項索引(多選)vString getSelectedItem() 取被選項取被選項vString getSelectedItems() 取被選項(多選)取被選項(多選)vvoid select(int index) 選中指定的項選中指定的項vString getItem(int index) 按索引號取出該項按索引號取出該項vint getItemCount() 取出項數(shù)取出項數(shù)vString getItems( ) 取出所有的項取出所有的項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 滾動條滾動條n構造函數(shù)構造函數(shù)mySlider = new Scrollbar(Scrollbar.HORI

56、ZONTAL , 0 , 1 , 0 , Integer.MAX_VALUE); v滾動條方向滾動條方向v滑塊初始位置滑塊初始位置v滑塊尺寸滑塊尺寸v滾動槽最小值滾動槽最小值v滾動槽最大值滾動槽最大值n方法方法vint getValue() 返回滑塊當前位置返回滑塊當前位置vsetUnitIncrement(1); 設置單位增量(點按兩端箭頭)設置單位增量(點按兩端箭頭)vsetBlockIncrement(50); 設置塊增量(點按滾動槽)設置塊增量(點按滾動槽)7-8 滾動條菜單菜單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)建菜單項(創(chuàng)建菜單項(MenuItem) 加入相應菜單加入相應菜單MenuItem f1 = new MenuItem(“Open”), /創(chuàng)建各菜單項創(chuàng)建各菜單項MenuItem f2 = new MenuItem(Close),menuFile.add(f1); /加入菜單加入菜單menuFile.ad

溫馨提示

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

評論

0/150

提交評論