第六章 組件和事件的處理機(jī)制_第1頁
第六章 組件和事件的處理機(jī)制_第2頁
第六章 組件和事件的處理機(jī)制_第3頁
第六章 組件和事件的處理機(jī)制_第4頁
第六章 組件和事件的處理機(jī)制_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第六章組件和事件的處理機(jī)制技能目標(biāo)能運(yùn)用布局管理器及各種可視組件設(shè)計應(yīng)用程序圖形界面。知識目標(biāo)掌握常用可視組件的用法掌握容器組件的布局樣式掌握事件驅(qū)動機(jī)制項(xiàng)目任務(wù)本項(xiàng)目完成輸入學(xué)生的姓名、性別、個人愛好與籍貫信息并輸出。學(xué)生的信息輸入形式是借助于圖形化的用戶界面實(shí)現(xiàn)的。為方便用戶的輸入,在圖形化界面中使用了很多的可視組件。本章要點(diǎn)主要內(nèi)容6.1圖形用戶界面概述6.2常用可視化組件6.3布局管理器6.4事件處理機(jī)制6.1圖形用戶界面概述用戶界面是軟件開發(fā)中的一項(xiàng)重要工作。用戶界面是計算機(jī)的使用者——用戶與計算機(jī)系統(tǒng)交互的接口,用戶界面功能是否完善、方便,將直接影響用戶對應(yīng)用軟件的使用。GUI(GraphicalUserInterface圖形用戶界面)使用圖形方式借助菜單、按鈕等標(biāo)準(zhǔn)界面元素和鼠標(biāo)操作,幫助用戶方便地向計算機(jī)系統(tǒng)發(fā)出命令,啟動操作,并將系統(tǒng)運(yùn)行的結(jié)果以圖形的方式顯示給用戶。設(shè)計和實(shí)現(xiàn)圖形用戶界面的工作主要兩個:①創(chuàng)建組成界面的各元素,指定它們的屬性和位置關(guān)系,構(gòu)成完整的圖形用戶界面的外觀。②定義圖形用戶界面的事件和各界面元素對不同事件的響應(yīng),實(shí)現(xiàn)與用戶的交互。6.1圖形用戶界面概述Java基類(JavaFoundationClasses,JFC)是關(guān)于GUI組件和服務(wù)的完整集合,主要由5個API構(gòu)成:AWT、Swing、Java2D、DragandDrop、AccessibilityJFCSwingAWTJava2DDragandDropAccessibility6.1圖形用戶界面概述6.1圖形用戶界面概述

AWT組件庫為Java應(yīng)用程序提供了多種GUI工具。

Swing提供了一整套用Java語言編寫的GUI組件,以保證

可移植性。

Java2D是一種圖形API,提供了高級的二維圖形圖像處

理類的集合。

DragandDrop技術(shù)提供了Java和本地應(yīng)用程序之間的交

互性(交換數(shù)據(jù)等)。

AccessibilityAPI輔助開發(fā)使用非傳統(tǒng)輸入輸出方式(語

音)的應(yīng)用程序。AWT

AWT(AbstractWindowToolkit抽象工具包)是一個獨(dú)立平臺的窗口工具組件集。AWT的作用是給用戶提供基本的界面組件,如按鈕、列表框、菜單等。只提供按鈕、滾動條等最基本的組件,而不提供TreeView等現(xiàn)代化GUI組件,并且AWT組件只提供基本的功能,如按鈕上只能出現(xiàn)文字不能出現(xiàn)圖形。不能跨平臺。AWT組件通過相應(yīng)的本地組件與操作系統(tǒng)溝通,不同操作系統(tǒng),繪制出來的界面可能不同。

6.1圖形用戶界面概述java.lang.ObjectColor顏色Font字體Component組件BorderLayout,FlowLayoutCardLayout,GridBagLayot布局類CheckboxGroup復(fù)選框組Image圖象AWTEvent事件MenuComponent菜單組件Graphics圖形java.awt中的各個類

6.1圖形用戶界面概述SwingSwing是建立在AWT基礎(chǔ)之上的,解決了AWT不能跨平臺的問題,它利用了AWT的底層組件,包括圖形、顏色、字體、工具包和布局管理器等。通過引入新特性和豐富的功能,Swing提供了比AWT更全面的組件集合。SwingAPI是圍繞實(shí)現(xiàn)AWT各個部分的API構(gòu)建的,這保證了所有早期的AWT組件仍然可以使用。

大多數(shù)AWT組件只要在其類名前加J即可轉(zhuǎn)換成Swing組件。Swing組件均是以AWT的Container類為基礎(chǔ)開發(fā)的Javax.swing組件從功能上可分為:(1)頂層容器:JFrame,JApplet,JDialog,JWindow共4個。(2)中間容器:JPanel,JScrollPane,JSplitPane,JToolBar等。(3)特殊容器:在GUI上起特殊作用的中間層,如JInternalJFrame,JLayeredPane,JRootPane等。(4)基本控件:實(shí)現(xiàn)人機(jī)交互的組件,如Jbutton,JComboBox,JList,JMenu,JSlider,JTextField等。(5)不可編輯信息的顯示:向用戶顯示不可編輯信息的組件,例如JLabel,JProgressBar,ToolTip等。(6)可編輯信息的顯示:向用戶顯示能被編輯的格式化信息的組件,

如JColorChooser,JFileChoose,JFileChooser,JTextArea等。Swing組件的分類Java語言中,設(shè)計和實(shí)現(xiàn)GUI主要分為三個主要步驟:1.創(chuàng)建組件(component),建立可以顯示的元素2.指定布局(layout),排列組件位置3.響應(yīng)事件(event),與用戶產(chǎn)生交互6.2組件

組件(component)是構(gòu)成圖形用戶界面的基本成分和核心元素。組件類(Component)是一個抽象類,是AWT組件類層次結(jié)構(gòu)的基類,實(shí)際使用的組件都是Component類的子類。Component類提供對組件操作的通用方法,包括設(shè)置組件位置、設(shè)置組件大小、設(shè)置組件字體、響應(yīng)鼠標(biāo)或鍵盤事件、組件重繪等。javax.swing包中的JComponent類是java.awt包中Container類的一個直接子類。Component類是其他組件類的父類,該類的一些方法可直接繼承到子類中。(1)

setFont(Fontf):設(shè)置組件的字體。(2)

setForeground(Colorr):設(shè)置組件的前景色。(3)

setLocation(intx,inty):設(shè)置組件的顯示位置。(4)

setSize(intwidth,intheight):調(diào)整組件的大小,使其寬度為width,高度為height。(5)

setVisible(booleanb):根據(jù)參數(shù)b的值顯示或隱藏此組件。(6)

getForeground():獲得組件的前景色。(7)

getFont():獲得組件的字體。(8)

getBackground():獲得組件的背景色。(9)

getHeight():返回組件的當(dāng)前高度。(10)

invalidate():使此組件無效。(11)

getBounds():以Rectangle對象的形式獲得組件的邊界。Component(1)按鈕(JButton)按鈕是一個常用組件,按鈕可以帶標(biāo)簽或圖象。按鈕常用的構(gòu)造方法如下:①publicJButton(Iconicon):按鈕上顯示圖標(biāo)。②publicJButton(Stringtext):按鈕上顯示的文本為text。③publicJButton(Stringtext,Iconicon):創(chuàng)建名字是text且?guī)в袌D標(biāo)icon的按鈕。

按鈕常用的實(shí)例方法如下:①publicvoidsetText(Stringtext):按鈕調(diào)用該方法可以重新設(shè)置當(dāng)前按鈕的名字,名字由參數(shù)text指定。②publicStringgetText():按鈕調(diào)用該方法可以獲取當(dāng)前按鈕上的名字。③publicvoidsetIcon(Iconicon):按鈕調(diào)用該方法可以重新設(shè)置當(dāng)前按鈕上的

圖標(biāo)。常用可視組件

(2)標(biāo)簽(JLabel)JLabel類負(fù)責(zé)創(chuàng)建標(biāo)簽對象,標(biāo)簽用來顯示信息,但沒有編輯功能。標(biāo)簽常用構(gòu)造方法如下:①publicJLabel():創(chuàng)建沒有名字的標(biāo)簽。②publicJLabel(Strings):創(chuàng)建名字是s的標(biāo)簽。③publicJLabel(Strings,intaligment):創(chuàng)建名字是s,對齊方式是aligment的標(biāo)簽。aligment取值為JLabel.LEFT,JLabel.RIGHT,JLabel.CENTER。④publicJLabel(Iconicon):創(chuàng)建具有圖標(biāo)icon的標(biāo)簽,icon在標(biāo)簽中左對齊。按鈕常用實(shí)例方法如下:①publicStringgetText():獲取標(biāo)簽的名字。②publicvoidsetText(Strings)設(shè)置標(biāo)簽的名字是s。③publicvoidsetIcon(Iconicon)設(shè)置標(biāo)簽的圖標(biāo)是icon。常用可視組件

(3)文本框(JTextField)JTextField創(chuàng)建的一個對象就是一個文本框。用戶可以在文本框輸入單行的文本。文本框的主要構(gòu)造方法如下:①publicJTextField(intx):如果使用這個構(gòu)造方法創(chuàng)建文本框?qū)ο螅谋究虻目梢娮址麄€數(shù)由參數(shù)x指定。②publicJTextField(Strings):如果使用這個構(gòu)造方法創(chuàng)建文本框?qū)ο螅瑒t文本框的初始字符串為s.文本框常用實(shí)例方法如下:①publicvoidsetText(Strings):文本框?qū)ο笳{(diào)用該方法可以設(shè)置文本框中的文本為參數(shù)s指定的文本。②publicStringgetText():文本框?qū)ο笳{(diào)用該方法可以獲取文本框中的文本。③publicvoidsetEditable(booleanb):文本框?qū)ο笳{(diào)用該方法可以指定文本框的可編輯性。常用可視組件

容器(Container)是組件(Component)的抽象子類,是一種特殊的組件,在該類中允許裝入其他的組件,要裝入的組件也可以是容器,這樣可以創(chuàng)建完整的層次結(jié)構(gòu)。

容器有助于在屏幕上布置GUI組件。最常用的容器是Panel(面板)、Frame(框架)和Dialog(對話框)。

容器

容器

Java把由Container的子類或間接子類創(chuàng)建的對象稱為一個容器。容器類的常用方法:①publicvoidadd():一個容器調(diào)用這個方法將組件添加到該容器中。②publicvoidremoveAll():容器調(diào)用removeAll()方法可以移掉容器中的全部組件。③publicvoidremove(Componentc):調(diào)用remove(Componentc)方法可以移掉容器中參數(shù)指定的組件。④publicvoidvalidate():每當(dāng)容器添加新的組件或移掉組件時,應(yīng)該讓容器調(diào)用validate()方法,以保證容器中的組件能正確顯示出來。1)框架(JFrame)框架是一個不被其它窗體所包含的獨(dú)立的窗體,是在Java圖形化應(yīng)用中容納其它用戶接口組件的基本單位。JFrame類是用來創(chuàng)建一個窗體的??蚣艿臉?gòu)造方法如下:①publicJFrame():聲明并創(chuàng)建一個沒有標(biāo)題的JFrame對象。②publicJFrame(Stringtitle):聲明并創(chuàng)建一個指定標(biāo)題為title的JFrame對象??蚣艿膶?shí)例方法如下:①publicvoidadd(Componentcomp):在框架中添加組件comp。②publicvoidsetLayout(LayoutManagermgr):設(shè)置布局方式。③publicvoidsetTitle(Stringtitle):設(shè)置框架的標(biāo)題。④publicStringgetTitle(Stringtitle):獲取框架的標(biāo)題。容器

容器

⑤publicvoidsetBounds(inta,intb,intwidth,intheight):設(shè)置出現(xiàn)在屏幕上時的初始位置為(a,b),即距屏幕左面a個像素、距屏幕上方b個像素,窗口的寬是width,高是height。⑥publicvoidsetResizable(booleanb):設(shè)置窗口是否可調(diào)整大小,默認(rèn)窗口是可以調(diào)整大小的。⑦publicvoidsetDefaultCloseOperation(intoperation):單擊窗體右上角的關(guān)閉圖標(biāo)后,程序作出處理。operation取值為Jframe.DO_NOTHING_ON_CLOSE;Jframe.HIDE_ON_CLOSE;Jframe.EXIT_ON_CLOSE

建立一個框架importjavax.swing.*;importjava.awt.*;publicclassMyFrame{publicstaticvoidmain(Stringargs[]){JFramef=newJFrame("第一個窗口程序");//JFrame在javax.swing包中

f.setSize(220,140);f.setLocation(300,200);

f.setVisible(true);f.getContentPane().setBackground(Color.red);//Color在java.awt中f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//按關(guān)閉則退出程序}}importjavax.swing.*;publicclassF{publicstaticvoidmain(Stringargs[])

{JFramefra=newJFrame("ButtApp");fra.setSize(250,170);fra.setLayout(null);//關(guān)閉布局設(shè)置JButtonbutt=newJButton("click");butt.setSize(100,50);butt.setLocation(75,60);

fra.add(butt);fra.setVisible(true);

}}2)面板(JPanel)面板(JPanel)用于容納界面元素,以便在布局管理器的設(shè)置下可容納更多的組件,實(shí)現(xiàn)容器的嵌套。框架與面板盡管都是容器,但框架可以獨(dú)立顯示,但面板一般要嵌入到框架中顯示,框架可以帶標(biāo)題、菜單條等,但面板不帶。容器

importjavax.swing.*;importjava.awt.*;classMyFrame{publicstaticvoidmain(Stringargs[]){JFramef=newJFrame("加入面板的框架");f.setLayout(newGridLayout(2,1));//把框架分上下兩部分

JPanelp1=newJPanel();

JPanelp2=newJPanel();p1.setBackground(Color.red);//設(shè)置p1面板的背景色為紅色

p2.setBackground(Color.green);//設(shè)置p2面板的背景色為綠色

f.add(p1);f.add(p2);f.setSize(220,140);f.setLocation(300,200);f.setVisible(true);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}importjavax.swing.*;publicclassF{publicstaticvoidmain(Stringargs[])

{JFramefra=newJFrame("文本框程序");

JTextFieldtxt1=newJTextField(50);JTextFieldtxt2=newJTextField("TextField",50);fra.setBounds(0,0,300,200);fra.setLayout(null);txt1.setBounds(50,50,130,20);//設(shè)置文本框的大小txt2.setBounds(50,100,130,30);fra.add(txt1);fra.add(txt2);fra.setVisible(true);

}}6.3布局管理器

一個容器中的各個組件之間的位置和大小關(guān)系就稱之為布局。Java語言提供了布局管理器來管理組件在容器中的布局。

布局管理器會依據(jù)組件的加入順序決定其擺放方式。組件的大小、形狀、位置,在不同的布局管理器下有顯著的不同。此外,布局管理器會自動適應(yīng)小程序或應(yīng)用程序窗口的大小,如果某個窗口的大小改變了,那么其上各個組件的大小、形狀、位置都有可能發(fā)生改變。選擇了容器之后,可以通過容器的setLayout()和getLayout()方法來確定布局(Layout)。

Java提供以下幾種布局管理器(LayoutManager):流布局(FlowLayout)、邊界布局(BorderLayout)、網(wǎng)格布局(GridLayout)、卡片布局(CardLayout)等。

為每個容器都可以設(shè)置對應(yīng)的布局方式。沒有設(shè)置時,為缺省的布局方式。Panel、Applet的默認(rèn)布局為流布局,Window、Frame的默認(rèn)布局為邊界布局。6.3布局管理器

流式布局(FlowLayout)

流式布局按從左至右、從上至下的方式將組件加入到容器中。如果一行顯示不了所有的組件,會自動換到下一行顯示。對齊方式默認(rèn)為:CENTER;間距默認(rèn)為:5(像素)設(shè)置容器布局為流布局的方法如下:c.setLayout(FlowLayoutlayout):將容器組件的布局設(shè)為流布局。例如創(chuàng)建一個框架,若指定框架布局為流布局,則可用以下兩種方式。方式一:JFramef=newJFrame();FlowLayoutfLayout=newFlowLayout();f.setLayout(fLayout);方式二:JFramef=newJFrame();f.setLayout(newFlowLayout());流式布局(FlowLayout)importjava.awt.*;importjavax.swing.*;publicclassBorderLayoutDemo{ publicstaticvoidmain(Stringarg[])

{ JButtonb1=newJButton("Button1");

JButtonb2=newJButton("Button2"); JButtonb3=newJButton("Button3"); JButtonb4=newJButton("Button4"); JButtonb5=newJButton("Button5"); JFramewin=newJFrame("FlowStyle");

win.setLayout(newFlowLayout());//設(shè)置框架為流布局

win.add(b1); win.add(b2); win.add(b3); win.add(b4); win.add(b5); win.setSize(200,160); win.setVisible(true); win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}邊界布局(BorderLayout)

邊界布局將容器組件劃分成了5個區(qū)域:南(South)、北(North)、東(East)、西(West)、中(Center)。設(shè)置容器的布局為邊界布局的方法如下:c.setLayout(BorderLayoutlayout):將容器組件的布局設(shè)為流布局。若指定了容器的布局為邊界布局,則向容器中加入組件,可以通過以下兩種形式實(shí)現(xiàn):①add(Strings,Componentcomp):其中s代表位置,位置用字符串“South”、“North”、“East”、“West”、“Center”(默認(rèn))表示。②add(Componentcomp,intx):其中x是代表位置的常量值,分別是BorderLayout.SOUTH、BorderLayout.NORTH、BorderLayout.EAST、BorderLayout.WEST、BorderLayout.CENTER。邊界布局(BorderLayout)importjava.awt.*;importjavax.swing.*;classBorderLayoutDemo{ publicstaticvoidmain(Stringarg[])

{ JButtonnorth=newJButton("North");

JButtoneast=newJButton("East"); JButtonwest=newJButton("west"); JButtonsouth=newJButton("South"); JButtoncenter=newJButton("Center"); JFramewin=newJFrame("BorderStyle");

win.setLayout(newBorderLayout());//設(shè)置框架為邊界布局

win.add("North",north); win.add("South",south); win.add("Center",center); win.add("East",east);win.add("West",west);win.setSize(200,200);win.setVisible(true);win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}

網(wǎng)格布局將容器劃分成規(guī)則的行列網(wǎng)格樣式,組件逐行加入到網(wǎng)格中,每個組件大小一致。但當(dāng)容器中放置的組件數(shù)超過網(wǎng)格數(shù)時,則自動增加網(wǎng)格列數(shù),行數(shù)不變。在向GridLayout添加組件時,其順序是從網(wǎng)格的左上角開始,從左向右排列,直到排滿一行,再從下一行開始從左向右依次排列。網(wǎng)格布局(GridLayout)importjava.awt.*;importjavax.swing.*;classGridLayoutDemo{ publicstaticvoidmain(Stringarg[]){JButtonb1=newJButton("Button1");

JButtonb2=newJButton("Button2");JButtonb3=newJButton("Button3");JButtonb4=newJButton("Button4");JButtonb5=newJButton("Button5");JButtonb6=newJButton("Button6");JFramewin=newJFrame("GridStyle");

win.setLayout(newGridLayout(2,3));//設(shè)置框架為網(wǎng)絡(luò)布局

win.add(b1);win.add(b2);win.add(b3);win.add(b4);win.add(b5);win.add(b6);win.setSize(260,160);win.setVisible(true);win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}卡片式布局(CardLayout)

CardLayout布局好像是將各個組件作為卡片排放到一個“卡片盒”中,只有最上面的卡片可見??梢酝ㄟ^這種布局的方法將卡片中的任何一張移到最上面。通常每張卡片都是一個容器(如面板)。JTabbedPane創(chuàng)建的對象稱作選項(xiàng)卡窗格。選項(xiàng)卡窗格的默認(rèn)布局是CardLayout卡片式布局。選項(xiàng)卡窗格可以使用:add(Stringtext,Componentc);將組件c添加到容器當(dāng)中,并指定和該組件c對應(yīng)的選項(xiàng)卡的文本是text。使用構(gòu)造方法:publicJTabbedPane(intplace)創(chuàng)建的選項(xiàng)卡窗格的選項(xiàng)卡的位置由參數(shù)place指定,其值為JTabbedPane.TOP、JTabbedPane.BOTTOM、JTabbedPane.LEFT、JTabbedPane.RIGHT??ㄆ讲季郑–ardLayout)importjava.awt.*;importjavax.swing.*;publicclassCardLayoutDemo{ publicstaticvoidmain(Stringarg[])

{ JFramewin=newJFrame("CardStyle");

JTabbedPanep=newJTabbedPane(JTabbedPane.LEFT);//創(chuàng)建選項(xiàng)卡窗格

for(inti=1;i<=3;i++)

{

p.add("觀看第"+i+"個按鈕",newJButton("按鈕"+i)); }

win.add(p);//將選項(xiàng)卡窗格加入到框架中

win.setSize(260,160); win.setVisible(true); win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}習(xí)題16.4事件處理機(jī)制

在一個GUI程序中,為了能夠接收用戶的輸入、鍵盤命令和鼠標(biāo)操作,程序應(yīng)該能夠識別這些操作并做出相應(yīng)的響應(yīng)。通常,一個鍵盤操作或一個鼠標(biāo)操作將引發(fā)一個系統(tǒng)預(yù)先定義好的事件,在程序中需要編寫事件的處理程序。事件處理機(jī)制事件處理的過程中的幾個基本概念:(1)Event(事件)。所謂事件,就是用戶使用鼠標(biāo)或鍵盤對窗口

中的組件進(jìn)行交互發(fā)生的一個操作。例如,單擊按鈕、輸入文

字、單擊鼠標(biāo)或鍵盤等。(2)EventSource(事件源)。所謂事件源,就是能夠產(chǎn)生事件的

對象。如按鈕、鼠標(biāo)、文本框或鍵盤等。(3)EventHandler(事件監(jiān)聽者或處理者)。接收由事件源所產(chǎn)生

的事件消息的對象,它通常是一個接口或適配器。(4)事件處理程序。對接收到的事件(消息)進(jìn)行處理的程序代

碼,通常是一個方法,它包含在事件監(jiān)聽器中,方法的結(jié)構(gòu)

是由系統(tǒng)預(yù)先定義好的。為事件源注冊監(jiān)聽器,事件源產(chǎn)生事件后,事件處理系統(tǒng)便會自動產(chǎn)生一個與操作對應(yīng)的事件類的對象(實(shí)例),監(jiān)聽器(接口或適配器)監(jiān)聽到事件并將該事件交給相應(yīng)的事件處理程序,由事件處理程序完成對事件的處理。如當(dāng)用戶單擊鼠標(biāo)時,事件處理系統(tǒng)便會產(chǎn)生一個代表此事件的ActionEvent事件類的對象。用戶進(jìn)行的操作不同,所產(chǎn)生的事件類對象也會不同。每一類事件對應(yīng)一個監(jiān)聽器接口,該接口規(guī)定了接收并處理該類事件的方法規(guī)范。事件處理機(jī)制工作過程引入事件處理機(jī)制后的編程基本方法如下:①組件的事件處理類所在的包為:importjava.awt.event.*或

importjavax.swing.event.*②用如下語句設(shè)置事件監(jiān)聽者:事件源.addXxxListener(事件監(jiān)聽者)---實(shí)現(xiàn)了XxxListener接口的類的實(shí)例③事件監(jiān)聽者所對應(yīng)的類實(shí)現(xiàn)事件所對應(yīng)的接口XxxListener,并重

寫接口中的全部方法。④要刪除事件監(jiān)聽者,可以使用語句:

事件源.removeXxxLitener()編寫事件處理程序的方法事件觸發(fā)及處理過程示意圖Java常用事件事件類/接口名稱接口方法與說明ActionEvent動作事件類ActionListener接口actionPerformed(ActionEvente)單擊按鈕、選擇菜單項(xiàng)或在文本行中按回車鍵時ComponentEvent調(diào)整事件類ComponentListener接口componentMoved(ComponentEvente)組件移動時componentHidden(ComponentEvente)組件隱藏時componentResized(ComponentEvente)組件縮放時componentShown(ComponentEvente)組件顯示時FocusEvent焦點(diǎn)事件類FocusListener接口focusGained(FocusEvente) 組件獲得焦點(diǎn)時focusLost(FocusEvente) 組件失去焦點(diǎn)時ItemEvent選擇事件類ItemListener接口itemStateChanged(ItemEvente)選擇復(fù)選框、單選按鈕、單擊列表框、選中帶復(fù)選框菜單時WindowEvent窗口事件類WindowListener接口windowOpened(WindowEvente) 窗口打開后windowClosed(WindowEvente) 窗口關(guān)閉后windowClosing(WindowEvente) 窗口關(guān)閉時windowActivated(WindowEvente) 窗口激活時windowDeactivated(WindowEvente) 窗口失去焦點(diǎn)時windowIconified(WindowEvente) 窗口最小化時windowDeiconified(WindowEvente) 最小化窗口還原時AdjustmentEvent調(diào)整事件類AdjustmentListener接口adjustmentValueChanged(AdjustmentEvente)改變滾動條滑塊位置Java常用事件

每個事件類都提供方法:publicObjectgetSource(),當(dāng)多個事件源觸發(fā)的事件由一個共同的監(jiān)聽器處理時,通過該方法可判斷當(dāng)前的事件源是哪個組件。Java常用事件事件適配器

為進(jìn)行事件處理,需要實(shí)現(xiàn)Listener接口的類,而Java規(guī)定在實(shí)現(xiàn)該接口的類中,必須實(shí)現(xiàn)接口中所聲明的全部方法。在具體程序設(shè)計過程中,有可能只用到接口中的一個或幾個方法。

Java為那些聲明了多個方法的Listener接口提供了一個對應(yīng)的適配器(Adapter)類,在該類中實(shí)現(xiàn)了對應(yīng)接口的所有方法,只是方法體為空。

因此在創(chuàng)建新類時,可以不實(shí)現(xiàn)接口,而只繼承某個適當(dāng)?shù)倪m配器,并且僅覆蓋所關(guān)心的事件處理方法。事件適配器接口名稱適配器名稱接口名稱適配器名稱ComponentListenerComponentAdapterMouseListenerMouseAdapterFocusListenerFocusAdapterMouseMotionListenerMouseMotionAdapterItemListenerItemAdapterWindowListenerWindowAdapterKeyListenerKeyAdapter接口與對應(yīng)的適配器類利用KeyAdapter類處理TextEven事件可供選擇的可視組件(1)復(fù)選框(JCheckBox)復(fù)選框提供兩種狀態(tài),一種是選中,另一種是未選中,用戶通過單擊該組件切換狀態(tài)。復(fù)選框的常用方法①publicJCheckBox():創(chuàng)建一個沒有名字的復(fù)選框。②publicJCheckBox(Stringtext):創(chuàng)建一個名字是text的復(fù)選框。③publicbooleanisSelected():如果復(fù)選框處于選中狀態(tài)該方法返回true,否則返回false。(2)單選按鈕(JRadioButton)單選按鈕和復(fù)選框很類似,所不同的是:在若干個復(fù)選框中我們可以同時選中多個,而一組單選按鈕同一時刻只能有一個被選中。單選按鈕的常用方法如下:①JRadioButton(Stringtext):創(chuàng)建一個名字是text的單選按鈕。②JRadioButton(Stringtext,booleanselected):創(chuàng)建一個名字是text的單選按鈕,同時指定了單選按鈕的選中狀態(tài)。③publicbooleanisSelected():如果單選按鈕處于選中狀態(tài)該方法返回true,否則返回false。

例可供選擇的可視組件(3)組合框(JComboBox)①publicJComboBox():使用該構(gòu)造方法創(chuàng)建一個沒有選項(xiàng)下拉列表。②publicJComboBox(Object[]items):創(chuàng)建包含指定數(shù)組中的元素的JComboBox。默認(rèn)情況下,選擇數(shù)組中的第一項(xiàng)。③publicvoidaddItem(ObjectanObject):下拉列表調(diào)用該方法增加選項(xiàng)。④publicintgetSelectedIndex():下拉列表調(diào)用該方法可以返回當(dāng)前下拉列表中被選中的選項(xiàng)的索引,索引的起始值是0。⑤publicObjectgetSelectedItem():下拉列表調(diào)用該方法可以返回當(dāng)前下拉列表中被選中的選項(xiàng)。⑥publicvoidremoveItemAt(intanIndex):下拉列表調(diào)用該方法可以從下拉列表的選項(xiàng)中刪除索引值是anIndex選項(xiàng)。例可供選擇的可視組件(4)列表框(JList)列表框的作用和組合框的作用基本相同,但它允許用戶同時選擇多項(xiàng)。列表框與組合框的方法大致相同,但須注意以下方法的使用:①publicObjectgetSelectedValue():返回所選的第一個值,如果選擇為空,則返回null。②publicObject[]getSelectedValues():返回所選單元的一組值。返回值以遞增的索引順序存儲。③publicint[]getSelectedIndexes():獲取選項(xiàng)框中選中的多項(xiàng)位置索引編號。返回值是整型數(shù)組。

例可供選擇的可視組件對話框

對話框(Dialog)是一個帶有標(biāo)題欄的無邊界窗口,通常用于接受用戶的信息或向用戶顯示信息。對話框用Dialog類創(chuàng)建,而Dialog類是從Window類繼承的。對話框的默認(rèn)布局是BorderLayout。

通常定義一個框架作為對話框的所屬框架。importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassDialogDemoextendsJFrameimplementsActionListener{ publicDialogDemo(){ super("對話框示例");JButtonb=newJButton("打開對話框"); add(b); b.addActionListener(this); setSize(200,120);

setVisible(t

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論