版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
13圖形用戶界面Java程序設(shè)計第章13圖形用戶界面Java程序設(shè)計第章1導(dǎo)讀Introduction圖形用戶界面設(shè)計是程序設(shè)計的重要組成部分,Java語言提供了豐富的組件來完成界面設(shè)計,并通過事件機制實現(xiàn)功能處理。導(dǎo)讀Introduction圖形用戶界面設(shè)計是程序設(shè)計的重要2C目錄ONTENTS13.2窗口13.3常用組件與布局13.6小結(jié)13.1圖形用戶界面概述13.4事件處理13.5對話框C目錄ONTENTS13.2窗口13.3常用組件313.1.1抽象窗口工具集AWT圖形用戶界面(GraphicUserInterface,GUI)是實現(xiàn)人機交互的窗口。Java早期提供的AWT包(AbstractWindowToolkit,AWT)中包括了圖形用戶界面設(shè)計的基本類庫,它是Java設(shè)計GUI的核心,為用戶提供基本的界面組件。這些類都放在了java.awt包中。13.1.1抽象窗口工具集AWT圖形用戶界面(Graph413.1.1抽象窗口工具集AWTComponentLabelButtonContainerCheckBoxChoiceTextComponentCanvasWindowPanelTextFieldTextAreaFrameDialogAppletAWT的Component類結(jié)構(gòu)13.1.1抽象窗口工具集AWTComponentLab513.1.1抽象窗口工具集AWTAWT由下面幾部分組成:Component(組件):按鈕、標(biāo)簽、菜單等組件。Container(容器):擴展組件的抽象類Window、Panel、Frame等。LayoutManager(布局管理器):定義容器中各組件的放置位置和大小等。Graphics(圖形類):與圖形處理相關(guān)的類。AWT的缺點是重量級組件,耗費資源多;圖形用戶界面依賴于本地系統(tǒng),失去了統(tǒng)一的風(fēng)格。13.1.1抽象窗口工具集AWTAWT由下面幾部分組成:613.1.2Swing組件Swing組件是在AWT組件基礎(chǔ)上發(fā)展而來的輕量級組件。它提供了AWT所能提供的所有功能并進(jìn)行了擴充。組件均用Java語言進(jìn)行開發(fā)。界面風(fēng)格統(tǒng)一,更為美觀。組件都放在javax.swing包中。13.1.2Swing組件Swing組件是在AWT組件基713.1.2Swing組件JLabelJListAbstractButtonJMenuBarJTableJPanelJTextComponentJTreeJOptionPaneComponentWindowJComponentFrameDialogContainerJFrameJDialogJButtonJToggleButtonJMenuItemJTextAreaJEditorPaneJTextFieldJComponent部分類層次關(guān)系13.1.2Swing組件JLabelJListAbst813.1.3組件與事件Java是以組件的形式進(jìn)行界面設(shè)計的。界面中的每一個組成部分都是一個組件,如按鈕、菜單、文本框、窗口等。這些組件直接或間接繼承自Component類。Container容器類是一個特殊的組件,它用于承載和顯示其他組件。其他組件按照一定的順序或位置裝入容器,才能夠顯示和使用。13.1.3組件與事件Java是以組件的形式進(jìn)行界面設(shè)計913.1.3組件與事件GUI事件處理機制。組件在容器中不能夠直接工作,需要與完成的功能連接起來,才能實現(xiàn)具體的功能,這就是Java的事件機制。在事件機制下,一個事件分為事件源、監(jiān)聽器和事件處理程序。監(jiān)聽器用于監(jiān)聽事件源。一個監(jiān)聽器可以監(jiān)聽多個事件源。監(jiān)聽器對象監(jiān)聽到事件源發(fā)生的事件后,就通知相應(yīng)的事件處理程序完成對應(yīng)的功能,從而實現(xiàn)一次事件的處理。13.1.3組件與事件GUI事件處理機制。10C目錄ONTENTS13.2窗口13.3常用組件與布局13.6小結(jié)13.1圖形用戶界面概述13.4事件處理13.5對話框C目錄ONTENTS13.2窗口13.3常用組件1113.2.1JFrame類JFrame(窗口)類是Container(容器)類的間接子類。一個JFrame對象就是一個窗口,可以容納其他組件。JFrame類的常用方法:類型方法名功能
JFrame()構(gòu)造一個初始時不可見的窗口
JFrame(String
title)創(chuàng)建一個初始不可見的、指定標(biāo)題的窗口voidsetTitle(Stringtitle)設(shè)置窗口標(biāo)題欄的內(nèi)容voidsetSize(intwidth,intheight)設(shè)置窗口的大小voidsetRisizable(booleanr)設(shè)置是否可以改變窗口大小13.2.1JFrame類JFrame(窗口)類是Con1213.2.1JFrame類類型方法名功能voidsetVisible(booleanv)設(shè)置窗口是否可見,默認(rèn)不可見voidsetLocation(intx,inty)設(shè)置窗口的位置(窗口左上角坐標(biāo))voidsetLocationRelativeTo(null)設(shè)置窗口居中顯示ContainergetContentPane()獲取內(nèi)容面板voidsetDefaultCloseOperation(into)設(shè)置在此窗口上發(fā)起"close"時默認(rèn)執(zhí)行的操作。13.2.1JFrame類類型方法名功能voidsetV1313.2.1JFrame類【例13.1】創(chuàng)建一個新窗口,定義該窗口大小為300*200,初始化位置為200*200,并且大小不可調(diào)整。Example13_01.java【例13.2】通過繼承方式創(chuàng)建一個新窗口Example13_02.java13.2.1JFrame類【例13.1】創(chuàng)建一個新窗口,14
13.2.2窗口菜單一個窗口菜單由多個組件共同構(gòu)成。JMenuBar(菜單條),用于創(chuàng)建一個菜單條。一個窗口中只能有一個菜單條,并且只能添加到窗口頂端。Frame添加JMenuBar的方法是:1、JMenuBar類setJMenuBar(JMenuBarmenubar)13.2.2窗口菜單一個窗口菜單由多個組件共同構(gòu)成。J15
JMenu(菜單)類,用于創(chuàng)建菜單。一個菜單條中可以添加多個菜單對象。一個菜單中可以添加另一個菜單,實現(xiàn)菜單的嵌套。JMenu類的常用構(gòu)造方法:JMenu(Strings)13.2.2窗口菜單2、JMenu類JMenu(菜單)類,用于創(chuàng)建菜單。JMenu(Strin16
JMenuItem(菜單項)類用于創(chuàng)建菜單項,每一個菜單中可以包含多個菜單項。JMenuItem類的常用構(gòu)造方法:JMenuItem(String
text)JMenuItem(String
text,Icon
icon)13.2.2窗口菜單3、JMenuItem類【例13.3】創(chuàng)建一個帶有菜單的窗口。Example13_03.javaJMenuItem(菜單項)類用于創(chuàng)建菜單項,每一個菜單中17C目錄ONTENTS13.2窗口13.3常用組件與布局13.6小結(jié)13.1圖形用戶界面概述13.4事件處理13.5對話框C目錄ONTENTS13.2窗口13.3常用組件18
13.3.1常用組件JButton類用于創(chuàng)建普通按鈕。常用的構(gòu)造方法:1、JButton按鈕類publicJButton(Stringtext)publicJButton(Stringtext,Iconicon)
JRadioButton類用于創(chuàng)建單選按鈕。JRadiaoButton類的構(gòu)造方法:2、JRadioButton單選按鈕類和ButtonGroup按鈕作用域類publicJRadioButton(Stringtext)publicJRadioButton(Stringtext,booleanselected)13.3.1常用組件JButton類用于創(chuàng)建普通按鈕。19
13.3.1常用組件構(gòu)造方法:publicButtonGroup()ButtonGroup按鈕作用域類用于確定單選按鈕的作用域。同一個域中只能有一個單選按鈕處于選中狀態(tài)。創(chuàng)建域?qū)ο蠛螅{(diào)用add(AbstractButtonb)方法將單選按鈕加入到指定作用域中。2、JRadioButton單選按鈕類和ButtonGroup按鈕作用域類13.3.1常用組件構(gòu)造方法:publicButto2013.3.1常用組件3、JCheckBox復(fù)選框
JCheckBox類用于創(chuàng)建復(fù)選框。構(gòu)造方法:JCheckBox(Stringtext)JCheckBox(Stringtext,booleanselected)4、JLabel標(biāo)簽
JLabel類用于創(chuàng)建顯示短文本字符串或圖像的標(biāo)簽。常用的構(gòu)造方法:JLabel()JLabel(Stringtext)JLabel(Stringtext,Iconicon,inthorizontalAlignment)13.3.1常用組件3、JCheckBox復(fù)選框JCh21
13.3.1常用組件JTextField類用于創(chuàng)建編輯單行字符串的文本框。常用的構(gòu)造方法:5、JTextField文本框JTextField(Stringtext)JTextField(Stringtext,intcolumns)
JPasswordField類功能與JTextField類相同。不同之處:輸入內(nèi)容時不直接顯示,而是用“*”或“●”代替。常用的構(gòu)造方法:6、JPasswordField密碼框JPasswordField(Stringtext)JPasswordField(Stringtext,intcolumns)13.3.1常用組件JTextField類用于創(chuàng)建編輯22
13.3.1常用組件JTextArea(Stringtext)JTextArea(introws,intcolumns)JTextArea(Stringtext,introws,intcolumns)JTextArea類用于創(chuàng)建顯示多行文本的文本區(qū)。常用構(gòu)造方法:JScrollPane類屬于容器,用于創(chuàng)建一個滾動條視圖。與TextArea類配合,當(dāng)文本區(qū)內(nèi)容超出顯示范圍時顯示滾動條。(詳見13.3.2節(jié))7、JTextArea文本區(qū)JScrollPane滾動條視圖13.3.1常用組件JTextArea(String2313.3.1常用組件【例13.4】常用組件的使用。Example13_04.java13.3.1常用組件【例13.4】常用組件的使用。2413.3.2常用容器Java提供了多種容器為程序設(shè)計所使用。容器可分為三類:頂層容器,包括JFrame、JDialog、JApplet、JWindow。普通容器,包括JPanel、JScrollPane、JSplitPane、JTabbedPane、JOptionPane。特殊容器,包括JInternalFrame、JLayeredPane、JRootPane、JToolBar。13.3.2常用容器Java提供了多種容器為程序設(shè)計所2513.3.2常用容器【例13.5】JWindow的簡單顯示。Example13_05.java1、JwindowJWindow也是頂層容器,只有一個空白界面,不具有標(biāo)題欄和窗口管理按鈕?!纠?3.5】運行結(jié)果13.3.2常用容器【例13.5】JWindow的簡單2613.3.2常用容器2、JPanel3、JScrollPane
JPanel類,Java中最常用的輕量級容器之一,默認(rèn)布局管理器是FlowLayout。JPanel可以容納其他組件,之間可以嵌套,但本身不可見,需要加入到頂層容器。常用構(gòu)造方法:JTextField(Stringtext)JTextField(Stringtext,intcolumns)
JScrollPane提供輕量級組件的Scrollable視圖用于管理滾動條。用于TextArea文本框中,它不支持重量級組件。常用構(gòu)造方法:JScrollPane()JScrollPane(Componentview)13.3.2常用容器2、JPanel3、JScroll27
13.3.2常用容器publicJSplitPane(intorientation,Componentleft,Componentright)publicJSplitPane(intorientation,booleanc,Componentleft,Componentright)JSplitPane用于將容器拆分成兩個部分,每個部分各放一個組件。容器拆分時可以水平拆分和垂直拆分,中間的拆分線可以進(jìn)行移動。常用構(gòu)造方法:參數(shù)orientation為JSplitPane.HORIZONTAL_SPLIT(水平分割)或JSplitPane.VERTICAL_SPLIT(垂直分割),left為放在左邊(或上邊)的組件,right為放在右邊(或下邊)的組件;參數(shù)c為true表示拆分線移動時組件跟著連續(xù)變化,為false則拆分線停止移動組件再發(fā)生變化。4、JSplitPane13.3.2常用容器publicJSplitPan28
13.3.3常用布局每個容器使用布局管理器對存放其中的組建進(jìn)行位置、大小的管理。使用布局管理器后,組件在容器中的大小和位置完全由布局管理器控制和管理,程序員不需要也不能再對組件的位置和大小進(jìn)行控制。每一種容器都有默認(rèn)的布局管理器??梢杂胹etLayout()方法重新設(shè)置布局管理器。13.3.3常用布局每個容器使用布局管理器對存放其中的2913.3.3常用布局java.awt.FlowLayout是流式布局管理器。把所有組件行進(jìn)行排列,一行滿了后自動排到下一行。組件的顯示位置隨著窗口的縮放而發(fā)生變化,但順序不變。位置與添加順序密切相關(guān),使用時要按一定的順序進(jìn)行添加。它是JPanel的默認(rèn)布局管理器。構(gòu)造方法:1、FlowLayout
publicFlowLayout()publicFlowLayout(intalign,inthgap,intvgap)參數(shù)align:FlowLayout.LEFT(左對齊)、FlowLayout.RIGHT(右對齊)、FlowLayout.CENTER(居中對齊)、FlowLayout.LEADING(與容器方向開始邊對齊)和FlowLayout.TRAILING(與容器結(jié)束邊對齊)。13.3.3常用布局java.awt.FlowLayou3013.3.3常用布局【例13.6】FlowLayout應(yīng)用舉例Example13_06.java【例13.6】運行結(jié)果13.3.3常用布局【例13.6】FlowLayout應(yīng)3113.3.3常用布局java.awt.BorderLayout稱為邊框布局管理器,把一個容器分成五個區(qū)域,這五個區(qū)域分別是東西南北中。五個區(qū)域的常量標(biāo)識為:EAST、WEST、SOUTH、NORTH、CENTER。BorderLayout是JFrame的默認(rèn)布局管理器。構(gòu)造方法:2、BorderLayout
publicBorderLayout()publicBorderLayout(inthgap,intvgap)13.3.3常用布局java.awt.BorderLay3213.3.3常用布局2、BorderLayout
【例13.7】BorderLayout應(yīng)用舉例。Example13_07.java【例13.6】運行結(jié)果13.3.3常用布局2、BorderLayout【例13313.3.3常用布局java.awt.GridLayout稱為網(wǎng)格布局管理器,它將容器劃分成網(wǎng)格結(jié)構(gòu),每一個網(wǎng)格中可以放置一個組件。所有組件的大小都相同,均填充滿整個網(wǎng)格。這些組件按照添加順序從左到右,從上到下加入到網(wǎng)格中并顯示。構(gòu)造方法:3、GridLayout
publicGridLayout()publicGridLayout(introws,intcols)publicGridLayout(introws,intcols,inthgap,intvgap)參數(shù)rows和cols可以有一個值為零,表示可以將任意數(shù)量的對象置于行中或列中。13.3.3常用布局java.awt.GridLayou3413.3.3常用布局3、GridLayout
【例13.8】GridLayout應(yīng)用舉例,簡單電話撥號界面設(shè)計。根據(jù)按鍵的分布情況,首先定義一個3行4列的網(wǎng)格,然后在每個網(wǎng)格單元中添加一個相應(yīng)的按鍵。Example13_08.java13.3.3常用布局3、GridLayout【例13.3513.3.3常用布局java.awt.GridBagLayout稱為網(wǎng)格包布局管理器,不需要組件大小相同就可以按水平、垂直或沿著基線對齊。GridBagLayout中的組件可以占用一個或多個網(wǎng)絡(luò)單元格,但這些組件的具體放置位置和放置方式需要通過GridBagConstraints類的實例進(jìn)行設(shè)置。GridBagLayout的構(gòu)造方法:4、GridBagLayout
publicGridBagConstraints()publicGridBagConstraints(int
gridx,int
gridy,int
gridwidth,int
gridheight,double
weightx,double
weighty,int
anchor,int
fill,Insets
insets,int
ipadx,int
ipady)
publicGridBagLayout()GridBagConstraints的構(gòu)造方法:13.3.3常用布局java.awt.GridBagLa3613.3.3常用布局4、GridBagLayout【例13.9】利用GridBagLayout布局,設(shè)計一個簡單計算器。在這個界面中,按鈕“=”需要占用兩行一列,按鈕“0”需要占用一列兩行。Example13_09.java13.3.3常用布局4、GridBagLayout【例13713.3.3常用布局java.awt.CardLayout稱為卡片布局管理器。把添加的每個組件像卡片一樣疊加在一起,每次只顯示最上面的一個組件。卡片的順序由組件對象本身在容器內(nèi)部的順序決定。CardLayout定義了一組方法,這些方法允許應(yīng)用程序按順序地瀏覽這些卡片,或者顯示指定的卡片。5、CardLayout13.3.3常用布局java.awt.CardLayou3813.3.3常用布局5、CardLayoutCardLayout類的常用方法類型方法名功能CardLayout()創(chuàng)建一個間距為0的卡片布局CardLayout(inthgap,intgap)創(chuàng)建一個具有水平間距和垂直間距的卡片布局voidfirst(Containerparent)翻轉(zhuǎn)到容器的第一張卡片voidnext(Containerparent)翻轉(zhuǎn)到指定容器的下一張卡片voidprevious(Containerparent)翻轉(zhuǎn)到指定容器的前一張卡片。如果當(dāng)前可見卡片是第一個,則翻到最后一張voidlast(Containerparent)翻轉(zhuǎn)到容器的最后一張卡片voidshow(Containerarent,Stringname)顯示指定name的組件13.3.3常用布局5、CardLayoutCardLa39
13.3.3常用布局javax.swing.BoxLayout稱為盒式布局管理器。允許以水平或垂直方向布置多個組件,這些組件排在一行或一列。BoxLayout是Box容器的默認(rèn)布局管理器。構(gòu)造方法:publicBoxLayout(Containertarget,intaxis)axis為布置組件時使用的軸,常用的值有BoxLayout.X_AXIS(指定組件從左到右排在一排)和BoxLayout.Y_AXIS(指定組件從上到下排在一列)。在實際應(yīng)用中,多使用Box類的靜態(tài)方法設(shè)置布局,而不是直接使用BoxLayout。6、BoxLayout13.3.3常用布局javax.swing.BoxLa4013.3.3常用布局6、BoxLayout【例13.10】BoxLayout應(yīng)用舉例,設(shè)計一個簡單的用戶注冊界面。Example13_10.java【例13.10】運行結(jié)果13.3.3常用布局6、BoxLayout【例13.104113.3.3常用布局容器使用setLayout(null)方法將布局設(shè)為空。添加進(jìn)入容器的組件使用setBounds(intx,inty,intwidth,intheight)方法指定該組件在容器中的位置和大小。7、null(空布局)【例13.11】null(空布局)應(yīng)用舉例,在窗口中構(gòu)造一個圍棋的棋盤。Example13_11.java【例13.11】運行結(jié)果13.3.3常用布局容器使用setLayout(null42C目錄ONTENTS13.2窗口13.3常用組件與布局13.6小結(jié)13.1圖形用戶界面概述13.4事件處理13.5對話框C目錄ONTENTS13.2窗口13.3常用組件43
13.4.1事件處理模型能夠產(chǎn)生事件的組件都可以成為事件源,例如按鈕、菜單、文本框等。1、事件源事件監(jiān)視器用于對發(fā)生事件的事件源進(jìn)行監(jiān)視。綁定監(jiān)視器又稱為注冊監(jiān)視器。注冊監(jiān)視器的方法:2、事件監(jiān)視器事件源對象.addXXXListener(監(jiān)視器)其中,XXX為對應(yīng)的事件類型。完成一個事件處理可分為三步:確定事件源;對確定的事件源注冊監(jiān)視器;對事件接口的監(jiān)視器類重寫其中的方法。3、處理事件的接口13.4.1事件處理模型能夠產(chǎn)生事件的組件都可以成為事44
13.4.2ActionEvent事件ActionEvent稱動作事件。能產(chǎn)生ActionEvent事件的事件源有按鈕、文本框、密碼框、菜單項、單選按鈕等。1、ActionEvent事件源注冊監(jiān)視器的方法為:2、注冊監(jiān)視器事件源對象.addActionListener(ActionListenerlistener)ActionEvent是動作事件類。參數(shù)listener是監(jiān)聽“事件源對象”的監(jiān)聽器,并能對事件進(jìn)行處理,它是一個實現(xiàn)ActionListener接口的類的對象。13.4.2ActionEvent事件ActionEv4513.4.2ActionEvent事件這個接口中只有一個方法:3、ActionListener接口ActionEvent是動作事件類,其對象用于表示產(chǎn)生的動作事件。常用方法:
publicvoidactionPerformed(ActionEvente)
publicObjectgetSource()獲取產(chǎn)生這個事件的事件源對象。publicStringgetActionCommand()返回與此動作相關(guān)的命令字符串。4、ActionEvent類13.4.2ActionEvent事件這個接口中只有一個4613.4.2ActionEvent事件【例13.12】利用ActionEvent事件,實現(xiàn)撲克牌的逐一顯示。【題目分析】根據(jù)題意,要想實現(xiàn)撲克牌的逐一顯示,需要使用CardLayout布局管理器,按順序添加各張撲克牌。由于圖片對象不能直接加入到容器中,可以將圖片添加到JLabel組件中。為了實現(xiàn)圖片的逐一顯示,可以根據(jù)需要創(chuàng)建若干個按鈕,通過ActionEvent事件的監(jiān)聽,完成不同的翻看動作。Example13_12.java13.4.2ActionEvent事件【例13.12】47
13.4.3MouseEvent事件所有的組件都可以產(chǎn)生鼠標(biāo)事件。當(dāng)鼠標(biāo)在一個組件上進(jìn)行單擊、移動、拖動等操作時都會觸發(fā)MouseEvent事件。1、MouseEvent事件源事件源注冊監(jiān)聽器有兩個方法:2、注冊監(jiān)視器addMouseListener(MouseListenerlistener)addMouseMotionListener(MouseMotionListenerlistener)第一個方法是注冊鼠標(biāo)監(jiān)視器,第二個方法是注冊鼠標(biāo)移動監(jiān)視器。13.4.3MouseEvent事件所有的組件都可以產(chǎn)4813.4.3MouseEvent事件MouseListener接口,主要處理鼠標(biāo)單擊事件。MouseMotionListener接口,主要處理鼠標(biāo)移動和拖動事件。3、鼠標(biāo)事件接口13.4.3MouseEvent事件MouseListe4913.4.3MouseEvent事件MouseListener和MouseMotionListener接口的常用方法類型方法名功能voidmouseClicked(MouseEvent
e)鼠標(biāo)按鍵在組件上單擊(按下并釋放)時調(diào)用該方法voidmousePressed(MouseEvent
e)鼠標(biāo)按鍵在組件上按下時調(diào)用該方法voidmouseReleased(MouseEvent
e)鼠標(biāo)按鈕在組件上釋放時調(diào)用該方法voidmouseEntered(MouseEvent
e)鼠標(biāo)進(jìn)入到組件上時調(diào)用該方法voidmouseExited(MouseEvent
e)鼠標(biāo)移出組件時調(diào)用該方法voidmouseDragged(MouseEvent
e)*鼠標(biāo)按鍵在組件上按下并拖動時調(diào)用該方法voidmouseMoved(MouseEvent
e)*鼠標(biāo)光標(biāo)移動到組件上但無按鍵按下時調(diào)用13.4.3MouseEvent事件MouseListe5013.4.3MouseEvent事件為減少程序的編寫量,Java提供了對應(yīng)的適配器類。當(dāng)處理事件的接口中多于一個方法時,Java相應(yīng)地就提供一個適配器類。該類繼承了相應(yīng)的接口,并重寫了所有的方法,只是這些方法均為空。當(dāng)用戶繼承這個類后,只要重寫想完成的方法即可。對于鼠標(biāo)事件,MouseAdapter類就實現(xiàn)了MouseListener接口和MouseMotionListener接口,監(jiān)視器可以通過繼承MouseAdapter類來代替繼承鼠標(biāo)接口,簡化了程序設(shè)計。13.4.3MouseEvent事件為減少程序的編寫量,5113.4.3MouseEvent事件MouseEvent類表示產(chǎn)生鼠標(biāo)事件的對象。MouseEvent類的常用方法4、MouseEvent類類型方法名功能ObjectgetSource()獲取產(chǎn)生鼠標(biāo)事件的事件源intgetButton()獲取觸發(fā)事件的鼠標(biāo)按鍵。鼠標(biāo)左鍵的返回值為1,對應(yīng)的常量為MouseEvent.BUTTON1;鼠標(biāo)右鍵的返回值為3,對應(yīng)的常量為MouseEvent.BUTTON3;鼠標(biāo)滾輪的返回值為2,對應(yīng)的常量為MouseEvent.BUTTON2intgetClickCount()獲取鼠標(biāo)連擊的次數(shù)intgetX()獲取鼠標(biāo)指針在事件源中的X坐標(biāo)值intgetY()獲取鼠標(biāo)指針在事件源中的Y坐標(biāo)值13.4.3MouseEvent事件MouseEvent5213.4.3MouseEvent事件【例13.13】使用鼠標(biāo)適配器類,監(jiān)聽鼠標(biāo)在按鈕上的點擊動作,顯示點擊的按鍵、點擊的次數(shù)和點擊時鼠標(biāo)的坐標(biāo)位置。Example13_13.java【例13.13】運行結(jié)果13.4.3MouseEvent事件【例13.13】使用53
13.4.4KeyEvent事件當(dāng)一個組件處于激活狀態(tài)時,敲擊鍵盤上的按鍵就會產(chǎn)生KeyEvent鍵盤事件。1、事件源事件源注冊監(jiān)聽器的方法:addKeyListener(KeyListenerlistener);KeyEvent是鍵盤事件類。KeyListener接口實現(xiàn)鍵盤事件監(jiān)聽。3、KeyListener接口2、注冊監(jiān)視器13.4.4KeyEvent事件當(dāng)一個組件處于激活狀態(tài)54
13.4.4KeyEvent事件publicvoidkeyPressed(KeyEvente)publicvoidkeyReleased(KeyEvente)publicvoidkeyTyped(KeyEvente)KeyListener接口中定義的方法:說明:第一個方法在事件源上按下按鍵時被調(diào)用;第二個方法在事件源上松開按下的鍵時被調(diào)用;第三個方法在事件源上鍵入某個鍵又松開時被調(diào)用。Java為KeyListener接口提供的適配器類是KeyAdapter類。13.4.4KeyEvent事件publicvoid5513.4.4KeyEvent事件KeyEvent類用于產(chǎn)生鍵盤事件對象。KeyEvent類的常用方法:
4、KeyEvent類類型方法名功能ObjectgetSource()獲取產(chǎn)生鍵盤事件的事件源chargetKeyChar()獲取與此事件中的鍵關(guān)聯(lián)的字符,例如,shift+“a”的返回值是“A”,這種關(guān)聯(lián)字符只在keyType()方法中才生效intgetKeyCode()鍵盤上實際鍵的整數(shù)代碼,在KeyEvent類中以“VK_”開頭的靜態(tài)常量代表各個按鍵的KeyCode。常用的KeyCode鍵值如表13.6所示(下頁)staticStringgetKeyText(int
keyCode)獲得描述keyCode的字符串,如“HOME”、“F1”或“A”等。booleanisActionKey()判斷此事件中的鍵是否為“動作”鍵。如果是則返回true,否則返回false。13.4.4KeyEvent事件KeyEvent類用于產(chǎn)5613.4.4KeyEvent事件4、KeyEvent類KeyEvent類用于產(chǎn)生鍵盤事件對象。KeyCode鍵值表:KeyCode常量鍵值KeyCode常量鍵值VK_0~VK_90~9鍵VK_SLASH/鍵VK_A~VK_Za~z鍵VK_BACK_SLASH\鍵VK_F1~VK_F12功能鍵F1~F12VK_OPEN_BRACKET[鍵VK_SHIFTShift鍵VK_CLOSE_BRACKET]鍵VK_CONTROLctrl鍵VK_QUOTE左單引號鍵VK_ALTalt鍵VK_BACK_QUOTE右單引號鍵VK_ENTER回車鍵VK_LEFT向左箭頭鍵13.4.4KeyEvent事件4、KeyEvent類K5713.4.4KeyEvent事件4、KeyEvent類KeyCode常量鍵值KeyCode常量鍵值VK_BACK_SPACE退格鍵VK_RIGHT向右箭頭鍵VK_ESCAPEEsc鍵VK_UP向上箭頭鍵VK_SPACE空格鍵VK_DOWN向下箭頭鍵VK_COMMA逗號鍵VK_ENDEnd鍵VK_SEMICOLON分號鍵VK_HOMEHome鍵VK_PERIOD.鍵VK_TABTab鍵13.4.4KeyEvent事件4、KeyEvent類K58
13.4.5ItemEvent事件產(chǎn)生ItemEvent事件的事件源有選擇框JCheckBox、下拉列表JComboBox、菜單項JMenuItem等。1、事件源事件源注冊監(jiān)聽器的方法:2、注冊監(jiān)視器addItemListener(ItemListenerlistener);ItemEvent是項目事件類。13.4.5ItemEvent事件產(chǎn)生ItemEven59
13.4.5ItemEvent事件publicvoiditemStateChanged(ItemEvente)當(dāng)選擇項發(fā)生改變時調(diào)用該方法。ItemListener接口實現(xiàn)項目狀態(tài)改變事件的監(jiān)聽。接口中的方法:3、ItemListener接口13.4.5ItemEvent事件publicvoi60
13.4.5ItemEvent事件publicObjectgetItem()publicintgetStateChange()publicStringparamString()ItemEvent類用于產(chǎn)生項目狀態(tài)改變事件的對象。常用方法:第二個方法可以獲取狀態(tài)更改的類型,有2個常量值,分別是ItemEvent.SELECTED(選擇項改變、值為1)和ItemEvent.DESELECTED(選擇項未改變、值為2);第三個方法獲取標(biāo)識此項事件的參數(shù)字符串。這個方法會得到一系列與此事件相關(guān)的信息,在程序調(diào)試時非常有用。4、ItemEvent類13.4.5ItemEvent事件publicObj6113.4.5ItemEvent事件【例13.14】設(shè)計一個圖形用戶界面,界面中有編輯域JTextField、按鈕JButton、選擇框JCheckBox和下拉列表JComboBox等組件,并設(shè)置相應(yīng)的監(jiān)視器對組件進(jìn)行監(jiān)聽,并將監(jiān)聽結(jié)果顯示在TextArea中。Example13_14.java【例13.14】運行結(jié)果13.4.5ItemEvent事件【例13.14】設(shè)計一62
13.4.6FocusEvent事件每個GUI組件都能夠作為FocusEvent焦點事件的事件源。1、事件源事件源注冊監(jiān)聽器的方法:2、事件監(jiān)視器addFocusListener(FocusListenerlistener)FocusEvent是焦點事件類。13.4.6FocusEvent事件每個GUI組件都能63
13.4.6FocusEvent事件publicvoidfocusGained(FocusEvente)publicvoidfocusLost(FocusEvente)FocusListener接口實現(xiàn)焦點事件的監(jiān)聽,接口中的方法:3、FocusListener接口第一個方法當(dāng)組件從無焦點變成有焦點時調(diào)用該方法;第二個方法當(dāng)組件從有焦點變成無焦點時調(diào)用該方法。FocusListener接口的適配器類是FocusAdapter類。13.4.6FocusEvent事件publicvo64
13.4.6FocusEvent事件publicComponentgetOppositeComponent()publicbooleanisTemporary()FocusEvent類用于產(chǎn)生焦點事件對象。常用方法:第一個方法用于獲得此焦點更改中涉及的另一個Component,對于FOCUS_GAINED獲得焦點事件,返回的組件是失去當(dāng)前焦點的組件。對于FOCUS_LOST失去焦點事件,返回的組件是獲得當(dāng)前焦點的組件;第二個方法用于獲得焦點更改的級別,如果焦點更改是暫時性的,則返回true,否則返回false。4、ItemEvent類13.4.6FocusEvent事件publicCo65
13.4.7DocumentEvent事件能夠產(chǎn)生javax.swing.event.DocumentEvent事件的事件源有文本框JTextField、密碼框JPasswordField、文本區(qū)JTextArea。這些組件不能直接觸發(fā)DocumentEvent事件,而是由組件對象調(diào)用getDocument()方法獲取文本區(qū)維護(hù)文檔,這個維護(hù)文檔可以觸發(fā)DocumentEvent事件。事件源注冊監(jiān)聽器的方法:2、注冊監(jiān)視器addDocumentListener(DocumentListenerlistener)DocumentEvent是文檔事件類。1、事件源13.4.7DocumentEvent事件能夠產(chǎn)生ja66
13.4.7DocumentEvent事件DocumentListener接口實現(xiàn)文本事件的監(jiān)聽。接口中的方法:3、DocumentListener接口publicvoidchangedUpdate(DocumentEvente)publicvoidremoveUpdate(DocumentEvente)publicvoidinsertUpdate(DocumentEvente)13.4.7DocumentEvent事件Docume67
13.4.7DocumentEvent事件DocumentEvent不是類,而是一個接口,位于javax.swing.event包中,用于處理文本事件。接口的方法:4、DocumentEvent接口DocumentgetDocument()DocumentEvent.EventTypegetType()intgetOffset()intgetLength()13.4.7DocumentEvent事件Docume68
13.4.8窗口事件窗口事件的事件源均為Window的子類,即Window的子類對象都能觸發(fā)窗口事件。1、事件源事件源注冊監(jiān)聽器有3個方法,分別對應(yīng)窗口事件的3個接口:2、注冊監(jiān)視器addWindowListener(WindowListenerlistener)addWindowFocusListener(WindowFocusListenerlistener)addWindowStateListener(WindowStateListenerlistener)13.4.8窗口事件窗口事件的事件源均為Window的69
13.4.8窗口事件和Window有關(guān)的接口有三個:3、Window接口WindowListener接口實現(xiàn)窗口事件的監(jiān)聽,WindowFocusListener接口實現(xiàn)窗口焦點事件的監(jiān)聽,WindowStateListener接口實現(xiàn)窗口狀態(tài)事件的監(jiān)聽。13.4.8窗口事件和Window有關(guān)的接口有三個:370Window接口中的方法類型方法名功能voidwindowOpened(WindowEvent
e)當(dāng)窗口被打開時,調(diào)用該方法voidwindowClosing(WindowEvent
e)當(dāng)窗口正在被關(guān)閉時,調(diào)用該方法。在這個方法中必須執(zhí)行dispose()方法,才能觸發(fā)“窗口已關(guān)閉”,監(jiān)視器才會再調(diào)用windowClosed()方法voidwindowClosed(WindowEvent
e)當(dāng)對窗口調(diào)用dispose而將其關(guān)閉時,調(diào)用該方法voidwindowIconified(WindowEvent
e)當(dāng)窗口從正常狀態(tài)變?yōu)樽钚』癄顟B(tài)時,調(diào)用該方法voidwindowDeiconified(WindowEvent
e)當(dāng)窗口從最小化狀態(tài)變?yōu)檎顟B(tài)時,調(diào)用該方法13.4.8窗口事件Window接口中的方法類型方法名功能voidwindow71類型方法名功能voidwindowActivated(WindowEvent
e)當(dāng)Window設(shè)置為活動Window時,調(diào)用該方法voidwindowDeactivated(WindowEvent
e)當(dāng)Window不再是活動Window時,調(diào)用該方法voidwindowGainedFocus(WindowEvent
e)1當(dāng)Window被設(shè)置為聚焦Window時,調(diào)用該方法voidwindowLostFocus(WindowEvent
e)1當(dāng)Window不再是聚焦Window時,調(diào)用該方法voidwindowStateChanged(WindowEvent
e)2當(dāng)窗口狀態(tài)改變時(例如最大化、最小化等),調(diào)用該方法13.4.8窗口事件Window接口中的方法類型方法名功能voidwindowActivated(Win72
13.4.8窗口事件WindowEvent類用于產(chǎn)生窗口事件對象。常用方法:4、WindowEvent類publicWindowgetWindow()publicintgetNewState()publicintgetOldState()publicWindowgetOppositeWindow()第一個方法用于獲得窗口事件的事件源。第二個方法,窗口狀態(tài)改變時可返回新的窗口狀態(tài);第三個方法,窗口狀態(tài)改變時可返回以前的窗口狀態(tài);第四個方法,可返回在此焦點或活動性變化中所涉及到的其他窗口對象。13.4.8窗口事件WindowEvent類用于產(chǎn)生窗73C目錄ONTENTS13.2窗口13.3常用組件與布局13.6小結(jié)13.1圖形用戶界面概述13.4事件處理13.5對話框C目錄ONTENTS13.2窗口13.3常用組件7413.5
對話框?qū)υ捒蛴糜谟脩艉统绦蛑g進(jìn)行信息交換。類JDialog(對話框)及其子類(用戶定義)的對象表示對話框。JDialog類和JFrame類一樣都是Window的子類,同屬于頂層容器。對話框分為有模式對話框和無模式對話框兩類。在創(chuàng)建一些簡單、標(biāo)準(zhǔn)的對話框時,主要使用javax.swing.JOptionPane類來完成。如果想創(chuàng)建一個自定義的對話框,則可以使用javax.swing.JDialog類。13.5對話框?qū)υ捒蛴糜谟脩艉统绦蛑g進(jìn)行信息交換。75
13.5.1消息對話框消息對話框showMessageDialog是顯示指定內(nèi)容的、帶有一個按鈕的對話框。用于顯示一些提示信息,它是一個有模式對話框。創(chuàng)建消息對話框的常用方法為:publicstaticvoidshowMessageDialog(Component
parentComponent,Object
message,String
title,int
messageType)它是JOptionPane類的一個靜態(tài)方法,有4個參數(shù):參數(shù)parentComponent,用于確定顯示對話框的父窗口,并在這個父窗口的中間顯示。參數(shù)message,用于在對話框中顯示提示信息。參數(shù)title,用于設(shè)置對話框的標(biāo)題欄內(nèi)容。參數(shù)messageT
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 在線教育學(xué)習(xí)體驗提升與優(yōu)化方案設(shè)計
- 鄉(xiāng)村農(nóng)業(yè)資源整合與運營策略
- 農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù)應(yīng)用合作框架協(xié)議
- 企業(yè)ISO9001質(zhì)量管理體系認(rèn)證咨詢服務(wù)合同
- 物資回收行業(yè)再生資源回收利用方案
- 2025年崇左貨運從業(yè)資格證考試題庫答案
- 2025年拉薩大車貨運資格證考試題
- 紅樓夢中的文化解讀與教學(xué)教案設(shè)計
- 勇氣鑄劍青春鋒芒現(xiàn)
- 寓言故事新編征文活動
- 2024年中國陶瓷碗盆市場調(diào)查研究報告
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之22:“8運行-8.1運行策劃和控制”(雷澤佳編制-2025B0)
- 2024-2030年中國硅肥行業(yè)規(guī)模分析及投資前景研究報告
- 電網(wǎng)行業(yè)工作匯報模板22
- 2024年度跨境電商平臺承包經(jīng)營合同3篇
- 2024-2025學(xué)年一年級數(shù)學(xué)上冊期末樂考非紙筆測試題(二 )(蘇教版2024秋)
- 2024年中國心力衰竭診斷和治療指南2024版
- 2024秋期國家開放大學(xué)??啤陡叩葦?shù)學(xué)基礎(chǔ)》一平臺在線形考(形考任務(wù)一至四)試題及答案
- HSE應(yīng)急預(yù)案(完整版)
- 《小學(xué)五年級期末家長會》課件模板(五套)
- 2024-2024年江蘇省普通高中學(xué)業(yè)水平測試物理試卷(含答案)
評論
0/150
提交評論