您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第8章Java图形用户界面与事件处理
第8章JAVA图形用户界面设计案例锦城学院电子系周红21事件监听器2按钮监听器33常用组件425记事本和表格4布局管理GUI的组成组件:一类能在屏幕上图形化显示的实体。用于应用程序和用户之间的交互。例如:按钮、文本框等都是组件。容器:界面的第1层放按钮等组件,第2层就是容器组件,可以将按钮视为放在容器上的。布局管理器:安排组件在容器上的排列位置。事件源、事件、事件监听器事件源鼠标键盘按钮等事件鼠标动作事件按键事件单击事件监听器鼠标监听器按键监听器单击监听器滑动鼠标按下某键单击按钮用户产生事件监听到事件后处理事件使用组件构造图形界面的一般步骤1.选择一个容器2.设置容器的布局管理器3.向容器中添加需要的组件4.为组件添加事件的监听java预定义的包java.awt包:包含用于创建用户界面和绘制图形图像的所有类。javax.swing包:是awt的扩展,提供了许多新的图形界面组件。提供一组“轻量级”(全部是Java语言)组件,尽量让这些组件在所有平台上的工作方式都相同。java.awt.event包:提供处理由AWT组件所激发的各类事件的接口和类。(1)java.awt.event.ActionEvent当单击组件时,组件会产生该类事件。(2)java.awt.event.WindowEvent当窗口发生变化及最大化和最小化时,窗口会产生该类事件。(3)java.awt.event.MouseEvent当鼠标在组件上移动、单击时会产生该类事件。(4)java.awt.event.KeyEvent当键盘上的键被按动时,组件会产生该类事件。(5)java.awt.event.FocusEvent当组件获取到焦点时,组件会产生该类事件。对应5种事件类型,Java定义了5种事件监听器接口。1.ActionListener事件监听器接口publicinterfaceActionListener{//单击组件时调用的事件动作publicvoidactionPerformed(ActionEvente);}2.WindowListener窗口监听器接口publicinterfaceWindowListener{//当窗口变成激活状态时,该方法被调用publicvoidwindowActivated(WindowEvente);//当窗口关闭时,该方法被调用publicvoidwindowClosed(WindowEvente);//当从菜单中单击退出窗口或关闭窗口菜单时,该方法被调用publicvoidwindowClosing(WindowEvente);//当窗口从激活状态变为非激活状态时,该方法被调用publicvoidwindowDectivated(WindowEvente);//当窗口从最小化状态变为原有状态时,该方法被调用publicvoidwindowDeiconified(WindowEvente);//当窗口变为最小化状态时,该方法被调用publicvoidwindowIconified(WindowEvente);//当窗口打开可见后,该方法被调用publicvoidwindowOpened(WindowEvente);}3.MouseListener鼠标监听器接口publicinterfaceMouseListener{//当用鼠标单击按下组件时,该方法被调用publicvoidmousePressed(MouseEvente);//当用鼠标单击弹起组件时,该方法被调用publicvoidmouseReleased(MouseEvente);//当用鼠标单击按下或弹起组件时,该方法被调用publicvoidmouseClicked(MouseEvente);//当鼠标进入组件的面积区域时,该方法被调用publicvoidmouseEntered(MouseEvente);//当鼠标移出组件的面积区域时,该方法被调用publicvoidmouseExited(MouseEvente);}4.MouseMotionListener鼠标动作监听器接口publicinterfaceMouseMotionListener{//当在组件上按下鼠标并拖动鼠标时,该方法被调用publicvoidmouseDragged(MouseEvente);//当鼠标在组件上方移动时,该方法被调用publicvoidmouseMoved(MouseEvente);}5.KeyListener按键监听器接口publicinterfaceKeyListener{//当键盘上的按键被按下时,该方法被调用publicvoidkeyPressed(KeyEvente);//当键盘上的按键被弹起时,该方法被调用publicvoidkeyReleased(KeyEvente);//当被按下的键对应Unicode字符时,该方法被调用publicvoidkeyTyped(KeyEvente);}6.FocusListener聚焦监听器接口publicinterfaceFocusListener{//当组件获取焦点时,该方法被调用publicvoidfocusGained(FocusEvente);//当组件失去焦点时,该方法被调用publicvoidfocusLost(FocusEvente);}创建事件监听器类以ActionListener接口为例:publicclassMyActionListenerimplmentsActionListener{publicvoidactionPerformed(ActionEvente){//写监听器监听到事件后,如何处理事件}}注册事件监听器例:要在按钮button上注册一个事件监听器//定义一个监听器listenerMyActionListenerlistener=newMyActionListener();//将监听器listener添加到按钮button上Button.addActionListener(listener);匿名注册事件监听器Button.addMouseListener(newMouselistener(){//实现Actionlistener接口中的所有方法});Button.addMouseListener(newMouseAdapter(){//实现ActionAdapter类中的合适方法});监听适配器1.WindowAdapter窗口监听适配器2.MouseAdapter鼠标监听适配器3.MouseMotionAdapter鼠标动作监听适配器4.KeyAdapter按键监听适配器5.FocusAdapter聚焦监听适配器21事件监听器2按钮监听器33常用组件425记事本和表格4布局管理例:按钮监听器//自定义按钮监听器importjava.awt.event.*;publicclassClickListenerimplementsActionListener{//有事件时输出消息publicvoidactionPerformed(ActionEvente){System.out.println(Iwasclicked!);}}创建按钮监听器对象,并添加到按钮中importjava.awt.event.ActionListener;importjavax.swing.*;publicclassButtonTester{publicstaticvoidmain(String[]args){finalintFRAME_WIDTH=300;finalintFRAME_HEIGHT=100;Java中的图形用户界面库//创建窗体对象—-顶层的窗体容器JFrameframe=newJFrame();//创建按钮对象,参数为按钮名字JButtonbutton=newJButton(Clickme!);frame.add(button);//将按钮添加到框架ClickListenerlistener=newClickListener();//将按钮监听器添加到按钮对象中button.addActionListener(listener);//设置框架长宽frame.setSize(FRAME_WIDTH,FRAME_HEIGHT);//设置关闭框架,程序停止运行frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//框架窗口可见frame.setVisible(true);}}执行结果:点击按钮,打印输出相应信息21事件监听器2按钮监听器33常用组件425记事本和表格4布局管理按钮和标签组件例题:每点击一下按钮,标签上面的值增加1publicclassViewer1{publicstaticvoidmain(String[]args){finalintFRAME_WIDTH=400;finalintFRAME_HEIGHT=100;JFrameframe=newJFrame();JButtonbutton=newJButton(addnumber);finalJLabellabel=newJLabel(number=0);标签类,参数可以显示//JPanel是拥有用户界面组件的面板//非顶层容器,既是容器,也是组件JPanelpanel=newJPanel();panel.add(button);panel.add(label);frame.add(panel);//注意:此类写在main中,是Viewer1的内部类classNumberAddListenerimplementsActionListener{privateintnumber;NumberAddListener(){number=0;}publicvoidactionPerformed(ActionEventevent){number++;//更新标签内容label.setText(number=+number);}}NumberAddListenerlistener=newNumberAddListener();button.addActionListener(listener);frame.setSize(FRAME_WIDTH,FRAME_HEIGHT);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}//main方法结束}//Viewer1类结束运行结果每点击一次按钮,标签上number的值增1文本输入例题:输入货物单价,计算总额。publicclassViewer2{publicstaticvoidmain(String[]args){finalintFRAME_WIDTH=500;finalintFRAME_HEIGHT=100;JFrameframe=newJFrame();JLabelplabel=newJLabel(price:);finalintFIELD_WIDTH=10;finaldoubleDEFAULT_PRICE=0.0;//文本框finalJTextFieldpField=newJTextField(FIELD_WIDTH);pField.setText(+DEFAULT_PRICE);JButtonbutton=newJButton(calculate);finalintnumber=10;JLabelnlabel=newJLabel(number=+number);finalJLabellabel=newJLabel(total=+0.0);//拥有用户界面组件的面板JPanelpanel=newJPanel();panel.add(plabel);panel.add(pField);panel.add(button);panel.add(nlabel);panel.add(label);frame.add(panel);c
本文标题:第8章Java图形用户界面与事件处理
链接地址:https://www.777doc.com/doc-4821913 .html