版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
5.1事件處理模型5.2按鈕事件的處理5.3鼠標(biāo)事件的處理5.4窗口事件的處理5.5鍵盤事件的處理5.6其他事件處理5.7事件處理實例(討論) 第五章事件處理事件(Event):
一個對象的狀態(tài)變化被稱為事件,即事件描述源狀態(tài)的變化。事件產(chǎn)生在用戶交互的圖形界面。例如,點擊一個按鈕,移動鼠標(biāo),通過鍵盤輸入一個字符,從列表中選擇一個項目,均是一個事件。用戶對于輸入設(shè)備的操作都是事件。
封裝了程序和用戶進(jìn)行交互的信息,和平臺無關(guān)的類。第五章事件處理事件處理機(jī)制圖事件包:
java.awt.event(javax.swing.event)第五章事件處理事件處理三要素
事件源發(fā)生事件的對象(組件),如按鈕、窗口等。事件類型Java中所有的事件都封裝成一個類,這些事件類被定義在java.awt.event包和javax.swing.event包中,所有的事件類均繼承了AWTEvent類,所有的事件類均繼承了一個方法——getSouce()方法,該方法返回發(fā)生事件的對象。
事件監(jiān)聽器
不同的事件類型發(fā)生后,由事件監(jiān)聽器接收事件并調(diào)用相應(yīng)的事件處理方法。所有的事件監(jiān)聽器實際上都是一個java.awt.event包中的接口,繼承了java.util.EventListener接口。不同事件類型的監(jiān)聽器具有不同的方法。
第五章事件處理
基于代理的事件處理模型,JDK1.1以后引入的事件處理模型。在產(chǎn)生事件的對象(組件)上,注冊一個或多個稱為監(jiān)聽器(監(jiān)聽者)的類,這些類包含事件處理器,用來接收和處理這個事件。
監(jiān)聽器就是實現(xiàn)了Listener接口的類。事件是只向注冊的監(jiān)聽器報告的對象。每個事件都有一個對應(yīng)的監(jiān)聽器接口,規(guī)定哪些方法必須在適合接收對應(yīng)事件的類中定義。實現(xiàn)了定義那些方法的接口的類可以注冊為一個監(jiān)聽器。第五章事件處理5.1事件處理模型事件對象(類型)事件監(jiān)聽器事件源事件處理模型示意圖第五章事件處理例5-1:ButtonEventExamples1.javaResultis:第五章事件處理5.1事件處理模型import
java.awt.*;importjavax.swing.*;import
java.awt.event.*;
class
ButtonHandler
implements
ActionListener
{
publicvoid
actionPerformed(
ActionEvente
)
{
System.out.println("ButtonareClickedonce!");
}}第五章事件處理5.1事件處理模型例5-1:ButtonEventExamples1.java
public
class
ButtonEventExamples1{publicstaticvoidmain(String[]arg){
//implementactionPerformedmethod
JFramem_mainF=newJFrame("EventTest");
Containerm_cPane=m_mainF.getContentPane(
);
ButtonHandler
bh1=
newButtonHandler(
);
JButton
m_btn=newJButton("Here");
m_btn.addActionListener(bh1);
m_cPane.add(m_btn,"South");第五章事件處理5.1事件處理模型例5-1(續(xù)):ButtonEventExamples1.javaJPanelp1=newJPanel();p1.setSize(150,150);m_cPane.add(p1,"Center");m_mainF.setSize(250,200);m_mainF.setVisible(true);}//endofmainmethod}//endofButtonEventExamples1class注:按鈕對象m_btn為事件源(被監(jiān)聽者),
實現(xiàn)Listener接口的對象bh1為事件監(jiān)聽器。第五章事件處理5.1事件處理模型例5-1(續(xù)):ButtonEventExamples1.java第五章事件處理5.1事件處理模型事件處理一般步驟:引入java.awt.event包
格式:
importjava.awt.event;給事件源對象注冊事件監(jiān)聽器格式:事件源對象.addXXXListener(XXXListener);如果事件源對象所在的主類已經(jīng)實現(xiàn)了相應(yīng)的事件監(jiān)聽器接口,即classcustomClassNameimplementsXXXListener則事件源對象.addXXXListener()的參數(shù)為this,否則需新建一個XXXListener類或其繼承類的對象。
實現(xiàn)XXXListener接口中的方法點擊按鈕所發(fā)生的事件為動作事件。
動作事件對應(yīng)的事件類是ActionEvent類。ActionEvent常用方法ObjectgetSource()
TheobjectonwhichtheEventinitiallyoccurred.StringgetActionCommand()
RgeModifiers()Returnsthemodifierkeyshelddownduringthisactionevent.StringparamString()Returnsaparameterstringidentifyingthisactionevent.第五章事件處理5.2按鈕事件的處理動作事件對應(yīng)的事件監(jiān)聽器為:
ActionListenerActionListener監(jiān)聽器接口中只有一個抽象的方法actionPerformed(ActionEvente)
按鈕事件處理的步驟:引入java.awt.event包。注冊動作事件監(jiān)聽者addActionListener(ActionListener)。實現(xiàn)ActionListener接口的方法,
即actionPerformed(ActionEvente)。第五章事件處理5.2按鈕事件的處理importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;classButtonEventExamples2extendsJFrame{
Containerm_cPane; JButtonm_bNorth,m_bSouth,m_bEast,m_bWest; JLabelm_labeltxt;ButtonEventExamples2(){ super("ActionListenerDemo"); m_cPane=this.getContentPane();第五章事件處理5.2按鈕事件的處理例5-2:ButtonEventExamples2_test.java
m_cPane.setBackground(Color.red); m_labeltxt=newJLabel("IamaLabel.");
m_cPane.add(m_labeltxt,"Center");
m_bNorth=newJButton("bei");
m_bNorth.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){
processAction(e);}});
m_cPane.add("North",m_bNorth);第五章事件處理5.2按鈕事件的處理例5-2(續(xù)):ButtonEventExamples2_test.java
m_bSouth=newJButton("nan");
m_bSouth.addActionListener(newActionListener(){
public
voidactionPerformed(ActionEvente){
processAction(e);}});
m_cPane.add("South",m_bSouth);
m_bEast=newJButton("dong");
m_bEast.addActionListener(newActionListener(){
public
voidactionPerformed(ActionEvente){
processAction(e);}});
m_cPane.add("East",m_bEast);第五章事件處理5.2按鈕事件的處理例5-2(續(xù)):ButtonEventExamples2_test.java
m_bWest=newJButton("xi");
m_bWest.addActionListener(newActionListener(){
public
voidactionPerformed(ActionEvente){
processAction(e);}});
m_cPane.add("West",m_bWest);
this.setSize(300,250);
this.setVisible(true);}//endofButtonEventExamples2()第五章事件處理5.2按鈕事件的處理例5-2(續(xù)):ButtonEventExamples2_test.javapublicvoidprocessAction(ActionEvente){
Objectobj=e.getSource();
//geteventsourceif(obj==m_bNorth)//handlebaseondifferenteventsource m_labeltxt.setText("NorthButtonClicked!"); if(obj==m_bSouth)//handlebaseondifferenteventsource m_labeltxt.setText("SouthButtonClicked!"); if(obj==m_bEast)//handlebaseondifferenteventsource m_labeltxt.setText("EastButtonClicked!"); if(obj==m_bWest)//handlebaseondifferenteventsource
m_labeltxt.setText("WestButtonClicked!");}}//endofButtonEventExamples2class第五章事件處理5.2按鈕事件的處理例5-2(續(xù)):ButtonEventExamples2_test.javapublicclassButtonEventExamples2_test{publicstaticvoidmain(Stringargs[]){ButtonEventExamples2nowFrame=newButtonEventExamples2();nowFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}第五章事件處理5.2按鈕事件的處理例5-2(續(xù)):ButtonEventExamples2_test.java第五章事件處理5.2按鈕事件的處理例5-2(續(xù)):ButtonEventExamples2_test.javaResultis:第五章事件處理5.2按鈕事件的處理作業(yè)1:jisuantixingForManWoMan_test.java程序結(jié)果如下圖所示:第五章事件處理5.2按鈕事件的處理總結(jié):實現(xiàn)ActionListener的三種方式
實現(xiàn)一個ActionListener子類,再把按鈕的事件處理委托給這個子類處理。例5-1即是這種方式。(不常用)用匿名類實現(xiàn)ActionListener接口,再把事件處理委托給這個匿名類的實例。主流的Swing事件處理。例5-2即是這種方式。(最常用)讓界面(容器)類實現(xiàn)ActionListener接口,再把事件處理委托給界面類。這種方式適合于處理一些短小簡單或要求內(nèi)聚的事件處理。第五章事件處理5.2按鈕事件的處理總結(jié):實現(xiàn)ActionListener的三種方式
方式三示意代碼:publicclassMyFrameextendsJFrameimplementsActionListener{
publicMyFrame(){
....//Createothercomponentsandaddthemintoacontainer
m_btn2.addActionListener(this);
}
/*按鈕的事件處理如下
*/
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==m_btn2)
{showMsg("按下了"+m_btn2.getText());……
}
}}產(chǎn)生鼠標(biāo)事件的事件源通常是一個容器或組件。當(dāng)鼠標(biāo)進(jìn)入、離開容器,或在容器中單擊鼠標(biāo)、拖動鼠標(biāo)等操作時,都發(fā)生鼠標(biāo)事件。鼠標(biāo)事件對應(yīng)的事件類是MouseEvent類。第五章事件處理5.3鼠標(biāo)事件的處理MouseEvent的常用方法方法功能getX()獲取鼠標(biāo)的X坐標(biāo)getY()獲取鼠標(biāo)的Y坐標(biāo)getPoint()獲取鼠標(biāo)的位置getClickout()獲取鼠標(biāo)單擊次數(shù)getModifiers()獲取鼠標(biāo)的左或右鍵isPopupTrigger()返回鼠標(biāo)事件是否為彈出菜單的觸發(fā)器第五章事件處理5.3鼠標(biāo)事件的處理鼠標(biāo)事件對應(yīng)的事件監(jiān)聽器有兩個:鼠標(biāo)事件MouseListener(orMouseAdapter)鼠標(biāo)移動事件MouseMontionListener(orMouseMontionAdapter)鼠標(biāo)滾輪事件MouseWheelListenerMouseMontionListener接口的方法:方法功能MouseMoved(MouseEvente)鼠標(biāo)移動時的處理方法MouseDraged(MouseEvente)鼠標(biāo)拖動時的處理方法第五章事件處理5.3鼠標(biāo)事件的處理MouseListener接口的方法方法功能MousePressed(MouseEvente)鼠標(biāo)按下時的處理方法MouseReleased(MouseEvente)鼠標(biāo)釋放時的處理方法MouseClicked(MouseEvente)鼠標(biāo)點擊時的處理方法MouseEntered(MouseEvente)鼠標(biāo)進(jìn)入時的處理方法MouseExited(MouseEvente)鼠標(biāo)離開時的處理方法第五章事件處理5.3鼠標(biāo)事件的處理
MouseWheelListener接口只有一個方法(滾輪滾動時處理方法)
publicvoid
MouseWheelMoved(MouseWheelEvente)MouseWheelEvent類常用方法publicPointgetPoint()
Returnsthex,ypositionoftheeventrelativetothesourcecomponent.getX()/getY()Returnsthehorizontalx/ypositionoftheeventrelativetothesourcecomponent.publicintgetWheelRotation()
Returnsthenumberof"clicks"themousewheelwasrotated.positivevaluesifthemousewheelwasrotateddown/towardstheuser.第五章事件處理5.3鼠標(biāo)事件的處理鼠標(biāo)事件的處理步驟:注冊MouseListener監(jiān)聽器。事件源對象.addMouseListener();當(dāng)事件源所在的類已經(jīng)實現(xiàn)MouseListener接口時,參數(shù)可用this,否則需創(chuàng)建或繼承一個MouseListener類的對象。實現(xiàn)MouseListener接口的所有方法,即MousePressed(MouseEvente)、MouseReleased(MouseEvente)、MouseEntered(MouseEvente)、MouseExited(MouseEvente)、MouseClicked(MouseEvente)。
第五章事件處理5.3鼠標(biāo)事件的處理鼠標(biāo)移動事件的處理步驟:注冊MouseMotionListener監(jiān)聽器。事件源對象.addMouseMotionListener();當(dāng)事件源所在的類已經(jīng)實現(xiàn)MouseMotionListener接口時,參數(shù)可用this,否則需創(chuàng)建或繼承一個MouseMotionListener類的對象。實現(xiàn)MouseMotionListener接口的所有方法,即
MouseMoved(MouseEvente)MouseDraged(MouseEvente)第五章事件處理5.3鼠標(biāo)事件的處理importjava.awt.*;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;classMouseHandleExamples1
extendsJFrame
implementsMouseListener{ Containerm_cPane; JTextAream_txtA;第五章事件處理5.3鼠標(biāo)事件的處理例5-3:mouseEvent_MouseListener_examples1.java JPanelm_panelA; JScrollPanem_spane;publicMouseHandleExamples1(){ super("MouseListenerexample1:"); m_cPane=this.getContentPane(); m_txtA=newJTextArea(); m_spane=newJScrollPane(m_txtA); m_txtA.setBounds(5,5,300,200); m_cPane.add(m_spane);
m_txtA.addMouseListener(this);第五章事件處理5.3鼠標(biāo)事件的處理例5-3(續(xù)):mouseEvent_MouseListener_examples1.java this.setSize(360,280); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}//endofMouseHandleExamples1()
publicvoidmouseClicked(MouseEvente){//mouseclickevent intmouseKeyValue=e.getButton();//getmouseeventsource StringmouseInfo=null; if(mouseKeyValue==MouseEvent.BUTTON1
) //ItisMouseKeyleftbutton? mouseInfo="MouseleftKey";else
if(mouseKeyValue==MouseEvent.BUTTON3)第五章事件處理5.3鼠標(biāo)事件的處理例5-3(續(xù)):mouseEvent_MouseListener_examples1.java //ItisMouseKeyrightbutton? mouseInfo="MouserightKey";else //ItisMouseKeymiddlebutton mouseInfo="MousemiddleKey";//endofif
m_txtA.append("Mouseclick."+mouseInfo+".\n");} //endofmouseClickedmethod
publicvoidmouseEntered(MouseEvente)//whenmouseentercontainer{
m_txtA.append("mouseentercontainer.\n");}第五章事件處理5.3鼠標(biāo)事件的處理例5-3(續(xù)):mouseEvent_MouseListener_examples1.javapublicvoidmouseExited(MouseEvente)//whenmouseexitcontainer{m_txtA.append("mouseexitcontainer.\n");}
publicvoidmousePressed(MouseEvente)//whenmousepressed{}
publicvoidmouseReleased(MouseEvente)//whenmousereleased{}}//endofMouseHandleExamples1classpublicclassmouseEvent_MouseListener_examples1{ publicstaticvoidmain(String[]args){ newMouseHandleExamples1();}}第五章事件處理5.3鼠標(biāo)事件的處理例5-3(續(xù)):mouseEvent_MouseListener_examples1.java第五章事件處理5.3鼠標(biāo)事件的處理例5-3(續(xù)):mouseEvent_MouseListener_examples1.javaResultis:與例5-3mouseEvent_MouseListener_examples1.java區(qū)別:第五章事件處理5.3鼠標(biāo)事件的處理例5-4:mouseEvent_MouseListener_examples2.java……
publicvoidmouseExited(MouseEvente)//whenmouseexitcontainer{m_txtA.append("mouseexitcontainer.\n");}
publicvoidmousePressed(MouseEvente)//whenmousepressed{m_txtA.append("mousepressed.\n");}publicvoidmouseReleased(MouseEvente)//whenmousereleased{m_txtA.append("mousereleased.\n");}}//endofMouseHandleExamples2class……Resultis…?第五章事件處理5.3鼠標(biāo)事件的處理例5-5:mouseEvent_TwoListener_examples.javaimportjava.awt.*;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importjava.awt.event.MouseMotionListener;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;classMouseHandleExamples3implementsMouseMotionListener,
MouseListener{ 第五章事件處理5.3鼠標(biāo)事件的處理例5-5:mouseEvent_TwoListener_examples.java JFramem_FrameA; Containerm_cPane; JTextAream_txtA; JPanelm_panelA; JScrollPanem_spane;
public
MouseHandleExamples3(){
m_FrameA=newJFrame("MouseListener+MouseMotionListenerexample:"); m_cPane=m_FrameA.getContentPane();第五章事件處理5.3鼠標(biāo)事件的處理例5-5:mouseEvent_TwoListener_examples.java
m_txtA=newJTextArea(); m_spane=newJScrollPane(m_txtA); m_txtA.setBounds(5,5,300,200); m_cPane.add(m_spane);
m_txtA.addMouseListener(this);
m_txtA.addMouseMotionListener(this); m_FrameA.setSize(360,280); m_FrameA.setVisible(true);m_FrameA.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}//endofMouseHandleExamples3()第五章事件處理5.3鼠標(biāo)事件的處理例5-5:mouseEvent_TwoListener_examples.java //TheseareMouseMotionListenermethods
publicvoidmouseDragged(MouseEvente){
Strings="Mousedragging:X="+e.getX()+"Y="+e.getY()+"\n"; m_txtA.append(s);
}
publicvoidmouseMoved(MouseEvente){}第五章事件處理5.3鼠標(biāo)事件的處理例5-5:mouseEvent_TwoListener_examples.java //TheseareMouseListenermethods
publicvoidmouseClicked(MouseEvente){Strings="Mouseclicking:(X="+e.getX()+",Y="+e.getY()+")\n";m_txtA.append(s);
}publicvoidmouseEntered(MouseEvente){ m_txtA.append("mouseentercontainer.\n");
}
publicvoidmouseExited(MouseEvente){ m_txtA.append("mouseexitcontainer.\n");
}第五章事件處理5.3鼠標(biāo)事件的處理例5-5:mouseEvent_TwoListener_examples.java
publicvoidmousePressed(MouseEvente){
}publicvoidmouseReleased(MouseEvente){
}}//endofMouseHandleExamples3classpublicclassmouseEvent_TwoListener_examples1{publicstaticvoidmain(Stringargs[]){ newMouseHandleExamples3();
}}窗口的事件監(jiān)聽器是WindowListener或WindowAdapter。WindowListenerwindowOpened(WindowEvente)windowClosed(WindowEvente)windowClosing(WindowEvente)WindowIconfied(WindowEvente)WindowDeiconfied(WindowEvente)WindowActivated(WindowEvente)WindowDeactivated(WindowEvente)第五章事件處理5.4窗口事件的處理在有焦點的組件上操作鍵盤時,發(fā)生鍵盤事件(KeyEvent)。KeyEvent類的常用方法
方法功能getKeyCode()獲得按下或釋放的鍵代碼getKeyText()獲得按下或釋放的鍵的字符串setKeyCode()設(shè)置按下或釋放的鍵代碼setKeyText()設(shè)置按下或釋放的鍵字符串getKeyChar()獲得按下或釋放的鍵的字符setKeyChar()設(shè)置按下或釋放的鍵的字符第五章事件處理5.5鍵盤事件的處理鍵盤事件的事件監(jiān)聽器是:KeyListener或KeyAdapter。
KeyListener類的方法方法功能KeyPressed(KeyEvente)按下鍵盤時的處理方法KeyReleased(KeyEvente)釋放鍵盤時的處理方法KeyTyped(MouseEvente)按下表示有效的Unicode鍵盤字符(非系統(tǒng)鍵)時的處理方法第五章事件處理5.5鍵盤事件的處理鍵盤事件的處理過程:注冊KeyListener監(jiān)聽器。事件源對象.addKeyListener();當(dāng)事件源所在的類已經(jīng)實現(xiàn)KeyListener接口時,參數(shù)可用this,否則需創(chuàng)建或繼承一個KeyListener的對象。實現(xiàn)KeyListener接口的所有方法,即
KeyPressed(KeyEvente)
KeyReleased(KeyEvente)
KeyTyped(MouseEvente)
第五章事件處理5.5鍵盤事件的處理第五章事件處理5.5鍵盤事件的處理例5-6:KeyEvent_examples1.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classKeyHandleExamples1extendsJFrameimplementsKeyListener{
Containerm_cPane; JTextAream_txtA; JPanelm_panelA; JScrollPanem_spane; JLabelm_labelA,m_labelB; intxpos,ypos;publicKeyHandleExamples1(){ super("KeyEventexample:"); m_cPane=this.getContentPane(); m_labelA=newJLabel("釣魚島是中國的!"); m_labelB=newJLabel("永遠(yuǎn)不屬于..!"); xpos=150;ypos=150; this.setLayout(null);
this.addKeyListener(this); m_labelA.setBounds(140,10,160,24); m_labelB.setBounds(140,30,160,24);第五章事件處理5.5鍵盤事件的處理例5-6(續(xù)):KeyEvent_examples1.java第五章事件處理5.5鍵盤事件的處理例5-6(續(xù)):KeyEvent_examples1.java m_cPane.add(m_labelA); m_cPane.add(m_labelB); this.setSize(400,400); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//endofKeyHandleExamples1()publicvoidpaint(Graphicsg){ super.paint(g); g.setColor(Color.red); g.fillOval(xpos,ypos,120,120);}//TheseareKeyListenermethods
publicvoidkeyPressed(KeyEvente){intnKeycode=e.getKeyCode(); if(nKeycode==KeyEvent.VK_LEFT) xpos=xpos-10; if(nKeycode==KeyEvent.VK_RIGHT) xpos=xpos+10; if(nKeycode==KeyEvent.VK_UP) ypos=ypos-10; if(nKeycode==KeyEvent.VK_DOWN) ypos=ypos+10;
repaint();}第五章事件處理5.5鍵盤事件的處理例5-6(續(xù)):KeyEvent_examples1.java
publicvoidkeyReleased(KeyEvente){}
publicvoidkeyTyped(KeyEvente){}}//endofKeyHandleExamples1classpublicclassKeyEvent_examples1{ publicstaticvoidmain(String[]args){ newKeyHandleExamples1();
}}第五章事件處理5.5鍵盤事件的處理例5-6(續(xù)):KeyEvent_examples1.java第五章事件處理5.6其他事件處理JMenuItem的事件處理,類似JButton的事件處理。即實現(xiàn)ActionListener接口。關(guān)鍵代碼:MenuItemMenuItem1;……MenuItem1=newMenuItem("new");MenuItem1.addActionListener(this);menu1.add(MenuItem1);……A.菜單事件處理
第五章事件處理5.6其他事件處理A.菜單事件處理
關(guān)鍵代碼(續(xù)):……
publicvoidactionPerformed(ActionEvente){if(e.getSource()==MenuItem1){……}……
實現(xiàn)ItemListener接口。關(guān)鍵步驟:1)聲明主類時實現(xiàn)ItemListener接口
classclassNameimplementsItemListener2)注冊監(jiān)聽者事件源對象.addItemListener();3)實現(xiàn)ItemListener接口中的itemStateChanged(ItemEvente)方法
Stringname=(String)e.getItem();第五章事件處理5.6其他事件處理B.選項事件處理(JCheckBoxJRadioButton)
實現(xiàn)AjdustmentListener接口。關(guān)鍵步驟:1)聲明主類時實現(xiàn)AjdustmentListener接口classclassNameimplementsAjdustmentListener2)注冊動作按鈕監(jiān)聽者事件源對象.addAjdustmentListener(this);3)實現(xiàn)AjdustmentListener接口的adjustmentStateChanged(AdjustmentEvente)方法第五章事件處理5.6其他事件處理C.滾動條事件處理(JScrollbar)實現(xiàn)ActionListener/
ItemListener接口。第五章事件處理5.6其他事件處理D.下拉列表事件處理(JComboBox)
實現(xiàn)ActionListener接口。E.編輯框事件處理(JTextFieldJPasswordField)
CategoryInterfaceNameMethodsActionActionListeneractionPerformed(ActionEvent)
ItemItemListener
itemStateChanged(ItemEvent)
MousemotionMouseMotionListenermouseDragged(MouseEvent)mouseMoved(MouseEvent)Mousebutton
MouseListenermousePressed(MouseEvent)mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)Key
KeyListenerkeyPressed(KeyEvent)keyReleased(KeyEvent)keyTyped(KeyEvent)表5-1AWT事件、方法類型和接口的關(guān)系CategoryInterfaceNameMethods
FocusFocusListenerfocusGained(FocusEvent)
focusLost(FocusEvent)
AdjustmentAdjustmentListeneradjustmentValueChanged(AdjustmentEvent)ComponentComponentListenercomponentMoved(ComponentEvent)
componentHidden(ComponentEvent)componentResized(ComponentEvent)componentShown(ComponentEvent)Container
ContainerListenercomponentAdded(containerEvent)componentRemoved(containerEvent)表5-1AWT事件、方法類型和接口的關(guān)系CategoryInterfaceNameMethods
WindowwindowListenerwindowClosing(WindowEvent)
windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)windowClosed(WindowEvent)windowActivated(WindowEvent)windowDeactivated(WindowEvent)TextTextListenertextValueChanged(TextEvent)表5-1AWT事件、方法類型和接口的關(guān)系
注冊監(jiān)聽器,必須實現(xiàn)XXXListener接口的所有方法!有時實際不需要使用XXXListener接口的所有方法。為了方便起見,Java語言提供了Adapter類。
程序可以繼承Adapters類,只需重寫所需要的方法。每個XXXListener接口一般都有對應(yīng)的XXXAdapter。
(有些XXXListener沒有,例如ActionListener)。例如:WindowListenerWindowAdapter第五章事件處理5.7事件適配器(Adapters)importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classFrameMenuPaint_examples1extendsJPanel{ JMenumenu1,menu2,menu3,menu4; JMenuItemmenuItem11,menuItem12,menuItem13; JMenuItemmenuItem21,menuItem22,menuItem23; JMenuItemmenuItem31,menuItem32; JMenuItemmenuItem41,menuItem42;第五章事件處理5.8實例(討論)
例5-7:FrameMenuPaint_test1.java
intradius_var,pattern_var; Colorcolor_var; Graphicsgraphics_var; finalintWIDTH=600; finalintHEIGHT=600;publicvoidinit(){ radius_var=0; pattern_var=2; color_var=Color.white;
}第五章事件處理5.8實例(討論)
例5-7(續(xù)):FrameMenuPaint_test1.javapublicJMenuBarCreatMenu(){ JMenuBarmb=newJMenuBar(); menu1=newJMenu("Color"); menuItem11=newJMenuItem("green"); menuItem12=newJMenuItem("red"); menuItem13=newJMenuItem("blue"); menuItem11.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){
processAction(e);}
});第五章事件處理5.8實例(討論)
例5-7(續(xù)):FrameMenuPaint_test1.java menuItem12.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){
processAction(e);}
}); menuItem13.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){
processAction(e);}
});
menu1.add(menuItem11); menu1.add(menuItem12); menu1.add(menuItem13);
mb.add(menu1);第五章事件處理5.8實例(討論)
例5-7(續(xù)):FrameMenuPaint_test1.java menu2=newJMenu("radius"); menuItem21=newJMenuItem("50"); menuItem22=newJMenuItem("100"); menuItem23=newJMenuItem("150");
menuItem21.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){
processAction(e);}
});第五章事件處理5.8實例(討論)
例5-7(續(xù)):FrameMenuPaint_test1.java menuItem22.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){
processAction(e); }
}); menuItem23.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){
processAction(e);}
});
menu2.add(menuItem21);menu2.add(menuItem22); menu2.add(menuItem23);
mb.add(menu2);第五章事件處理5.8實例(討論)
例5-7(續(xù)):FrameMenuPaint_test1.java menu3=newJMenu("pattern"); menuItem31=newJMenuItem("fill"); menuItem32=newJMenuItem("frame"); menuItem31.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){
processAction(e);}
}); menuItem32.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){
processAction(e);}
}); menu3.add(menuItem31);menu3.add(menuItem32);
mb.add(menu3);第五章事件處理5.8實例(討論)
例5-7(續(xù)):FrameMenuPaint_test1.java menu4=newJMenu("control"); menuItem41=newJMenuItem("clear"); menuItem42=newJMenuItem("exit"); menuItem41.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){
processAction(e);}
}); menuItem42.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){
processAction(e);}
});第五章事件處理5.8實例(討論)
例5-7(續(xù)):FrameMen
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)場急救與個人安全防護(hù)的融合應(yīng)用
- 智慧商業(yè)與工業(yè)互聯(lián)網(wǎng)平臺的未來規(guī)劃探討
- 智在行探討青少年的全方位技能開發(fā)
- 網(wǎng)絡(luò)環(huán)境下賓館酒店的品牌建設(shè)講座提綱
- 科技驅(qū)動下的創(chuàng)意產(chǎn)品設(shè)計策略
- 語言運用能力在小學(xué)作文教學(xué)中的培養(yǎng)
- 2025年南充貨運從業(yè)資格證模擬考試下載什么軟件
- 展會設(shè)計的核心展板的創(chuàng)意與功能結(jié)合
- 2025年度洗車房租賃合同及汽車美容、維修業(yè)務(wù)合作框架協(xié)議
- 二零二五年度中小企業(yè)金融貸款服務(wù)合同
- (二模)遵義市2025屆高三年級第二次適應(yīng)性考試試卷 地理試卷(含答案)
- 二零二五隱名股東合作協(xié)議書及公司股權(quán)代持及回購協(xié)議
- IQC培訓(xùn)課件教學(xué)課件
- 2025年計算機(jī)二級WPS考試題目
- 高管績效考核全案
- 2024年上海市中考英語試題和答案
- 教育部《中小學(xué)校園食品安全和膳食經(jīng)費管理工作指引》知識培訓(xùn)
- 長沙醫(yī)學(xué)院《無機(jī)化學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- eras婦科腫瘤圍手術(shù)期管理指南解讀
- GB/T 750-2024水泥壓蒸安定性試驗方法
- 初一到初三英語單詞表2182個帶音標(biāo)打印版
評論
0/150
提交評論