通信软件开发基础Java语言5-Event_第1页
通信软件开发基础Java语言5-Event_第2页
通信软件开发基础Java语言5-Event_第3页
通信软件开发基础Java语言5-Event_第4页
通信软件开发基础Java语言5-Event_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.1事件处理模型5.2按钮事件的处理5.3鼠标事件的处理5.4窗口事件的处理5.5键盘事件的处理5.6其他事件处理5.7事件处理实例(讨论) 第五章事件处理事件(Event):

一个对象的状态变化被称为事件,即事件描述源状态的变化。事件产生在用户交互的图形界面。例如,点击一个按钮,移动鼠标,通过键盘输入一个字符,从列表中选择一个项目,均是一个事件。用户对于输入设备的操作都是事件。

封装了程序和用户进行交互的信息,和平台无关的类。第五章事件处理事件处理机制图事件包:

java.awt.event(javax.swing.event)第五章事件处理事件处理三要素

事件源发生事件的对象(组件),如按钮、窗口等。事件类型Java中所有的事件都封装成一个类,这些事件类被定义在java.awt.event包和javax.swing.event包中,所有的事件类均继承了AWTEvent类,所有的事件类均继承了一个方法——getSouce()方法,该方法返回发生事件的对象。

事件监听器

不同的事件类型发生后,由事件监听器接收事件并调用相应的事件处理方法。所有的事件监听器实际上都是一个java.awt.event包中的接口,继承了java.util.EventListener接口。不同事件类型的监听器具有不同的方法。

第五章事件处理

基于代理的事件处理模型,JDK1.1以后引入的事件处理模型。在产生事件的对象(组件)上,注册一个或多个称为监听器(监听者)的类,这些类包含事件处理器,用来接收和处理这个事件。

监听器就是实现了Listener接口的类。事件是只向注册的监听器报告的对象。每个事件都有一个对应的监听器接口,规定哪些方法必须在适合接收对应事件的类中定义。实现了定义那些方法的接口的类可以注册为一个监听器。第五章事件处理5.1事件处理模型事件对象(类型)事件监听器事件源事件处理模型示意图第五章事件处理例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(续):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为事件源(被监听者),

实现Listener接口的对象bh1为事件监听器。第五章事件处理5.1事件处理模型例5-1(续):ButtonEventExamples1.java第五章事件处理5.1事件处理模型事件处理一般步骤:引入java.awt.event包

格式:

importjava.awt.event;给事件源对象注册事件监听器格式:事件源对象.addXXXListener(XXXListener);如果事件源对象所在的主类已经实现了相应的事件监听器接口,即classcustomClassNameimplementsXXXListener则事件源对象.addXXXListener()的参数为this,否则需新建一个XXXListener类或其继承类的对象。

实现XXXListener接口中的方法点击按钮所发生的事件为动作事件。

动作事件对应的事件类是ActionEvent类。ActionEvent常用方法ObjectgetSource()

TheobjectonwhichtheEventinitiallyoccurred.StringgetActionCommand()

RgeModifiers()Returnsthemodifierkeyshelddownduringthisactionevent.StringparamString()Returnsaparameterstringidentifyingthisactionevent.第五章事件处理5.2按钮事件的处理动作事件对应的事件监听器为:

ActionListenerActionListener监听器接口中只有一个抽象的方法actionPerformed(ActionEvente)

按钮事件处理的步骤:引入java.awt.event包。注册动作事件监听者addActionListener(ActionListener)。实现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(续):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(续):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(续):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(续):ButtonEventExamples2_test.javapublicclassButtonEventExamples2_test{publicstaticvoidmain(Stringargs[]){ButtonEventExamples2nowFrame=newButtonEventExamples2();nowFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}第五章事件处理5.2按钮事件的处理例5-2(续):ButtonEventExamples2_test.java第五章事件处理5.2按钮事件的处理例5-2(续):ButtonEventExamples2_test.javaResultis:第五章事件处理5.2按钮事件的处理作业1:jisuantixingForManWoMan_test.java程序结果如下图所示:第五章事件处理5.2按钮事件的处理总结:实现ActionListener的三种方式

实现一个ActionListener子类,再把按钮的事件处理委托给这个子类处理。例5-1即是这种方式。(不常用)用匿名类实现ActionListener接口,再把事件处理委托给这个匿名类的实例。主流的Swing事件处理。例5-2即是这种方式。(最常用)让界面(容器)类实现ActionListener接口,再把事件处理委托给界面类。这种方式适合于处理一些短小简单或要求内聚的事件处理。第五章事件处理5.2按钮事件的处理总结:实现ActionListener的三种方式

方式三示意代码:publicclassMyFrameextendsJFrameimplementsActionListener{

publicMyFrame(){

....//Createothercomponentsandaddthemintoacontainer

m_btn2.addActionListener(this);

}

/*按钮的事件处理如下

*/

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==m_btn2)

{showMsg("按下了"+m_btn2.getText());……

}

}}产生鼠标事件的事件源通常是一个容器或组件。当鼠标进入、离开容器,或在容器中单击鼠标、拖动鼠标等操作时,都发生鼠标事件。鼠标事件对应的事件类是MouseEvent类。第五章事件处理5.3鼠标事件的处理MouseEvent的常用方法方法功能getX()获取鼠标的X坐标getY()获取鼠标的Y坐标getPoint()获取鼠标的位置getClickout()获取鼠标单击次数getModifiers()获取鼠标的左或右键isPopupTrigger()返回鼠标事件是否为弹出菜单的触发器第五章事件处理5.3鼠标事件的处理鼠标事件对应的事件监听器有两个:鼠标事件MouseListener(orMouseAdapter)鼠标移动事件MouseMontionListener(orMouseMontionAdapter)鼠标滚轮事件MouseWheelListenerMouseMontionListener接口的方法:方法功能MouseMoved(MouseEvente)鼠标移动时的处理方法MouseDraged(MouseEvente)鼠标拖动时的处理方法第五章事件处理5.3鼠标事件的处理MouseListener接口的方法方法功能MousePressed(MouseEvente)鼠标按下时的处理方法MouseReleased(MouseEvente)鼠标释放时的处理方法MouseClicked(MouseEvente)鼠标点击时的处理方法MouseEntered(MouseEvente)鼠标进入时的处理方法MouseExited(MouseEvente)鼠标离开时的处理方法第五章事件处理5.3鼠标事件的处理

MouseWheelListener接口只有一个方法(滚轮滚动时处理方法)

publicvoid

MouseWheelMoved(MouseWheelEvente)MouseWheelEvent类常用方法publicPointgetPoint()

Returnsthex,ypositionoftheeventrelativetothesourcecomponent.getX()/getY()Returnsthehorizontalx/ypositionoftheeventrelativetothesourcecomponent.publicintgetWheelRotation()

Returnsthenumberof"clicks"themousewheelwasrotated.positivevaluesifthemousewheelwasrotateddown/towardstheuser.第五章事件处理5.3鼠标事件的处理鼠标事件的处理步骤:注册MouseListener监听器。事件源对象.addMouseListener();当事件源所在的类已经实现MouseListener接口时,参数可用this,否则需创建或继承一个MouseListener类的对象。实现MouseListener接口的所有方法,即MousePressed(MouseEvente)、MouseReleased(MouseEvente)、MouseEntered(MouseEvente)、MouseExited(MouseEvente)、MouseClicked(MouseEvente)。

第五章事件处理5.3鼠标事件的处理鼠标移动事件的处理步骤:注册MouseMotionListener监听器。事件源对象.addMouseMotionListener();当事件源所在的类已经实现MouseMotionListener接口时,参数可用this,否则需创建或继承一个MouseMotionListener类的对象。实现MouseMotionListener接口的所有方法,即

MouseMoved(MouseEvente)MouseDraged(MouseEvente)第五章事件处理5.3鼠标事件的处理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鼠标事件的处理例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鼠标事件的处理例5-3(续):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鼠标事件的处理例5-3(续):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鼠标事件的处理例5-3(续):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鼠标事件的处理例5-3(续):mouseEvent_MouseListener_examples1.java第五章事件处理5.3鼠标事件的处理例5-3(续):mouseEvent_MouseListener_examples1.javaResultis:与例5-3mouseEvent_MouseListener_examples1.java区别:第五章事件处理5.3鼠标事件的处理例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鼠标事件的处理例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鼠标事件的处理例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鼠标事件的处理例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鼠标事件的处理例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鼠标事件的处理例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鼠标事件的处理例5-5:mouseEvent_TwoListener_examples.java

publicvoidmousePressed(MouseEvente){

}publicvoidmouseReleased(MouseEvente){

}}//endofMouseHandleExamples3classpublicclassmouseEvent_TwoListener_examples1{publicstaticvoidmain(Stringargs[]){ newMouseHandleExamples3();

}}窗口的事件监听器是WindowListener或WindowAdapter。WindowListenerwindowOpened(WindowEvente)windowClosed(WindowEvente)windowClosing(WindowEvente)WindowIconfied(WindowEvente)WindowDeiconfied(WindowEvente)WindowActivated(WindowEvente)WindowDeactivated(WindowEvente)第五章事件处理5.4窗口事件的处理在有焦点的组件上操作键盘时,发生键盘事件(KeyEvent)。KeyEvent类的常用方法

方法功能getKeyCode()获得按下或释放的键代码getKeyText()获得按下或释放的键的字符串setKeyCode()设置按下或释放的键代码setKeyText()设置按下或释放的键字符串getKeyChar()获得按下或释放的键的字符setKeyChar()设置按下或释放的键的字符第五章事件处理5.5键盘事件的处理键盘事件的事件监听器是:KeyListener或KeyAdapter。

KeyListener类的方法方法功能KeyPressed(KeyEvente)按下键盘时的处理方法KeyReleased(KeyEvente)释放键盘时的处理方法KeyTyped(MouseEvente)按下表示有效的Unicode键盘字符(非系统键)时的处理方法第五章事件处理5.5键盘事件的处理键盘事件的处理过程:注册KeyListener监听器。事件源对象.addKeyListener();当事件源所在的类已经实现KeyListener接口时,参数可用this,否则需创建或继承一个KeyListener的对象。实现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("永远不属于..!"); 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(续):KeyEvent_examples1.java第五章事件处理5.5键盘事件的处理例5-6(续):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(续):KeyEvent_examples1.java

publicvoidkeyReleased(KeyEvente){}

publicvoidkeyTyped(KeyEvente){}}//endofKeyHandleExamples1classpublicclassKeyEvent_examples1{ publicstaticvoidmain(String[]args){ newKeyHandleExamples1();

}}第五章事件处理5.5键盘事件的处理例5-6(续):KeyEvent_examples1.java第五章事件处理5.6其他事件处理JMenuItem的事件处理,类似JButton的事件处理。即实现ActionListener接口。关键代码:MenuItemMenuItem1;……MenuItem1=newMenuItem("new");MenuItem1.addActionListener(this);menu1.add(MenuItem1);……A.菜单事件处理

第五章事件处理5.6其他事件处理A.菜单事件处理

关键代码(续):……

publicvoidactionPerformed(ActionEvente){if(e.getSource()==MenuItem1){……}……

实现ItemListener接口。关键步骤:1)声明主类时实现ItemListener接口

classclassNameimplementsItemListener2)注册监听者事件源对象.addItemListener();3)实现ItemListener接口中的itemStateChanged(ItemEvente)方法

Stringname=(String)e.getItem();第五章事件处理5.6其他事件处理B.选项事件处理(JCheckBoxJRadioButton)

实现AjdustmentListener接口。关键步骤:1)声明主类时实现AjdustmentListener接口classclassNameimplementsAjdustmentListener2)注册动作按钮监听者事件源对象.addAjdustmentListener(this);3)实现AjdustmentListener接口的adjustmentStateChanged(AdjustmentEvente)方法第五章事件处理5.6其他事件处理C.滚动条事件处理(JScrollbar)实现ActionListener/

ItemListener接口。第五章事件处理5.6其他事件处理D.下拉列表事件处理(JComboBox)

实现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事件、方法类型和接口的关系CategoryInterfaceNameMethods

FocusFocusListenerfocusGained(FocusEvent)

focusLost(FocusEvent)

AdjustmentAdjustmentListeneradjustmentValueChanged(AdjustmentEvent)ComponentComponentListenercomponentMoved(ComponentEvent)

componentHidden(ComponentEvent)componentResized(ComponentEvent)componentShown(ComponentEvent)Container

ContainerListenercomponentAdded(containerEvent)componentRemoved(containerEvent)表5-1AWT事件、方法类型和接口的关系CategoryInterfaceNameMethods

WindowwindowListenerwindowClosing(WindowEvent)

windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)windowClosed(WindowEvent)windowActivated(WindowEvent)windowDeactivated(WindowEvent)TextTextListenertextValueChanged(TextEvent)表5-1AWT事件、方法类型和接口的关系

注册监听器,必须实现XXXListener接口的所有方法!有时实际不需要使用XXXListener接口的所有方法。为了方便起见,Java语言提供了Adapter类。

程序可以继承Adapters类,只需重写所需要的方法。每个XXXListener接口一般都有对应的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(续):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(续):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(续):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(续):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(续):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(续):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(续):FrameMen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论