第9章图形用户界面.ppt

上传人:本田雅阁 文档编号:2502290 上传时间:2019-04-04 格式:PPT 页数:171 大小:1.07MB
返回 下载 相关 举报
第9章图形用户界面.ppt_第1页
第1页 / 共171页
第9章图形用户界面.ppt_第2页
第2页 / 共171页
第9章图形用户界面.ppt_第3页
第3页 / 共171页
亲,该文档总共171页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第9章图形用户界面.ppt》由会员分享,可在线阅读,更多相关《第9章图形用户界面.ppt(171页珍藏版)》请在三一文库上搜索。

1、1,第9章 图形用户界面,郑 莉,JAVA语言程序设计,2,目录,9.1 Applet 概述 9.2 Applet应用程序接口 9.3 绘图 9.4 Swing基础 9.5 Swing的特点和概念 9.6 Swing组件 9.7 其它Swing特性 9.8 本章小结 (说明:本章部分例题出自java_tutorial_sun),3,9.1 Applet 概述,Java Applet 一种嵌入HTML文档中的Java程序 与Application相比,Applet具有明显的优点 web浏览器提供了运行Applet所需要的许多功能 Applet是在运行时通过网络从服务器端下载的,因而便于软件的发布

2、和及时更新 Applet也有其局限性, 不能在客户机上读写当地文件 也不能连接除它所在的服务器以外的其它机器,4,在浏览器中加载一个Applet,功能是显示一个字符串“This is a Java Applet!” import java.awt.Graphics; import javax.swing.JApplet; public class Ex9_1 extends JApplet public void paint(Graphics g) /重载JApplet类的paint方法 /参数是Graphics类的对象,是由浏览器传递过来的 super.paint(g); /调用其超类JAp

3、plet类的paint方法 g.drawString(“This is a Java Applet!“,25,25); ,9.1 Applet概述(续) 例9_1,Applet概述,5,在NetBeans IDE中运行,9.1 Applet概述(续) 例9_1运行结果,Applet概述,6,编译ex9_1.java产生字节码文件ex9_1.class。接下来就需要编写一个HTML文件ex9_1.html来嵌入ex9_1.class 将ex9_1.html文件和Ex9_1.class文件放在同一个目录下。现在,在浏览器中打开这个HTML文件,当浏览器遇到Applet标记时,就会自动载入指定的cl

4、ass文件,就会实现在屏幕上绘制一串字符的效果,9.1 Applet概述(续) 例9_1运行结果,Applet概述,7,9.2 Applet应用程序接口,JApplet类 一个applet程序需要继承javax.swing包中的JApplet类,也可以继承老的AWT组件中的Applet类, JApplet类属于新的Swing组件 提供了applet在浏览器中运行需要具备的特定方法 浏览器载入时,要依次运行init、start、paint方法 离开浏览器页面时,执行stop 退出浏览器时,执行destroy 提供了所有这些方法的默认实现,所以我们在编写自己的applet时,就可以不必写出全部方法

5、,只要继承这个JApplet,然后重写特定的方法来增加特殊功能,8,9.2 Applet应用程序接口,Applet应用程序接口,9,9.2 Applet应用程序接口(续),Applet应用程序接口,10,import javax.swing.*;. import java.awt.*; public class HelloSwingApplet extends JApplet public void init() JLabel label = new JLabel( “You are successfully running a Swing applet!“); label.setHorizo

6、ntalAlignment(JLabel.CENTER); label.setBorder(BorderFactory.createMatteBorder( 1,1,2,2,Color.black); getContentPane().add(label, BorderLayout.CENTER); ,9.2 Applet应用程序接口(续) HelloSwingApplet.java,Applet应用程序接口,11,9.3 绘图,图形环境和图形对象 颜色和字体 使用Graphics类绘图 使用Graphics2D类绘图,12,9.3.1 图形环境和图形对象,坐标 GUI组件的左上角坐标默认为(

7、0,0) 从左上角到右下角,水平坐标x和垂直坐标y增加。 坐标的单位是象素 Graphics对象 Graphics对象是专门管理图形环境的。Graphics类是一个抽象类 设计一个抽象类Graphics可以给程序员提供一个与平台无关的绘图接口,因而程序员就可以以独立于平台的方式来使用图形。在各个平台上实现的Java系统将创建Graphics类的一个子类,来实现绘图功能,但是这个子类对程序员是透明的,也就是说我们只能看得到Graphics类,却不必关心其实现 在执行paint方法时,系统会传递一个指向特定平台的Graphics子类的图形对象g,绘 图,13,9.3.2 颜色和字体,Java中有关

8、颜色的类是Color类,它在java.awt包中,这个类声明了用于操作Java程序中颜色的方法和常量,绘 图,14,9.3.2 颜色和字体,Font类有关字体控制,在java.awt包中,绘 图,15,9.3.3 使用Graphics类绘图,Graphics类 其对象可以绘制文本、线条、矩形、多边形、椭圆、弧等多种图形,绘 图,18,用各种颜色绘制文字及各种图形 import java.awt.*; import javax.swing.*; public class Ex9_2 extends JFrame public Ex9_2() super( “演示字体、颜色、绘图” ); /调用基

9、类构造方法 setSize( 480, 250 ); /设置窗口大小 setVisible( true ); /显示窗口 public void paint( Graphics g ) super.paint( g ); / call superclasss paint method g.setFont( new Font( “SansSerif“, Font.BOLD, 12 ) ); g.setColor(Color.blue); /设置颜色 g.drawString(“字体ScanSerif,粗体,12号,蓝色“,20,50);,9.3.3 使用Graphics类绘图(续) Ex9_2.

10、java,绘 图,19,g.setFont( new Font( “Serif“, Font.ITALIC, 14 ) ); g.setColor(new Color(255,0,0); g.drawString( “ 字体Serif,斜体,14号,红色“, 250, 50 ); g.drawLine(20,60,460,60); /绘制直线 g.setColor(Color.green); g.drawRect(20,70,100,50); /绘制空心矩形 g.fillRect(130,70,100,50); /绘制实心矩形 g.setColor(Color.yellow); g.drawR

11、oundRect(240,70,100,50,50,50); /绘制空心圆角矩形 g.fillRoundRect(350,70,100,50,50,50); /绘制实心圆角矩形 g.setColor(Color.cyan); g.draw3DRect(20,130,100,50,true); /绘制突起效果空心矩形 g.fill3DRect(130,130,100,50,false); /绘制凹陷效果实心矩形,9.3.3 使用Graphics类绘图(续) Ex9_2.java,绘 图,20,g.setColor(Color.pink); g.drawOval(240,130,100,50);

12、/绘制空心椭圆 g.fillOval(350,130,100,50); /绘制实心椭圆 g.setColor(new Color(0,120,20); g.drawArc(20,190,100,50,0,90); /绘制一段圆弧 g.fillArc(130,190,100,50,0,90); /绘制扇形 g.setColor(Color.black); int xValues=250,280,290,300,330,310,320,290,260,270; int yValues=210,210,190,210,210,220,230,220,230,220; g.drawPolygon(xV

13、alues,yValues,10); /绘制空心多边形 int xValues2=360,390,400,410,440,420,430,400,370,380; g.fillPolygon(xValues2,yValues,10); /绘制实心多边形 ,9.3.3 使用Graphics类绘图(续) Ex9_2.java,绘 图,21,public static void main( String args ) JFrame.setDefaultLookAndFeelDecorated(true); /设置窗口的外观感觉为Java默认 Ex9_2 application = new Ex9_2

14、(); application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); 运行结果,9.3.3 使用Graphics类绘图(续) Ex9_2.java运行结果,绘 图,22,9.3.4 使用Graphics2D类绘图,Java2D API 提供了高级的二维图形功能 分布在java.awt、java.awt.image、java.awt.color、java.awt.font、java.awt.geom、java.awt.print和java.awt.image.renderable包中 它能轻松使你完成以下功能: 绘制任何宽度的直线 用渐

15、变颜色和纹理来填充图形 平移、旋转、伸缩、切变二维图形,对图像进行模糊、锐化等操作 构建重叠的文本和图形,绘 图,23,Graphics2D类 要想使用Java2D API,就必须通过一个该类的对象 是Graphics类的抽象子类 事实上,所有的paint方法用于绘图操作的对象实际上是Graphics2D的一个子类实例,该实例传递给paint方法,并被向上转型为Graphics类的实例。要访问Graphics2D功能,必须使用如下语句将传递给paint方法的Graphics引用强制转换为Graphics2D引用: Graphics2D g2d=(Graphics2D)g,9.3.4 使用Gra

16、phics2D类绘图(续),绘 图,24,实现例9_1的功能,使用Java2D使文字出现渐变色效果 import java.awt.*; import javax.swing.*; public class Ex9_3 extends JApplet public void paint(Graphics g) super.paint(g); Graphics2D g2d=(Graphics2D)g; g2d.setPaint(new GradientPaint(0,0,Color.red,180,45,Color.yellow); g2d.drawString(“This is a Java

17、Applet!“,25,25); ,9.3.4 使用Graphics2D类绘图(续) Ex9_3.java,绘 图,25,9.3.4 使用Graphics2D类绘图(续) Ex9_3.java运行结果,绘 图,26,9.4 Swing基础,前面介绍了如何在屏幕上绘制普通的图形,但如果需要绘制一个按钮,并使其可以对点击事件作出响应,就需要使用java Swing提供的组件 其实前面我们已经用到的JFrame、JApplet都是Swing组件,它们分别代表窗口组件和Applet容器组件,27,9.4.1 JFC与Swing,JFC Java Foundation Classes(Java基础类)的

18、缩写 是关于GUI 组件和服务的完整集合 作为J2SE 的一个有机部分,主要包含5 个部分 AWT Java2D Accessibility Drag & Drop Swing Swing JFC 的一部分 提供按钮、窗口、表格等所有的组件 纯Java组件(完全用Java写的),Swing 基础,28,9.4.2 Swing与AWT,早期版本的AWT组件 在java.awt包里,包括Button、Checkbox、Scrollbar等,都是Component类的子类 大部分含有native code,所以随操作系统平台的不同会显示出不同的样子,而不能进行更改,是重量级组件(heavyweigh

19、t components) 没有弹性、缺乏效率,Swing 基础,29,较新的Swing组件 其名称都是在原来AWT组件名称前加上J,例如JButton、JCheckBox、JScrollbar等,都是JComponent类的子类 Java1.2推出,架构在 AWT 之上,是AWT的扩展而不是取代 完全是由java语言编写的,其外观和功能不依赖于任何由宿主平台的窗口系统所提供的代码,是轻量级组件(lightweight components) 可提供更丰富的视觉感受,被越来越多地使用,9.4.2 Swing与AWT,Swing 基础,30,9.4.3 在Applet和Application中应

20、用Swing,在Applet中应用Swing,就是要将Swing组件加载到Applet容器上(通常是JApplet),这通常在init方法中完成 在Application中应用Swing,也是要将Swing组件加载到这个Application的顶层容器(通常是JFrame)中,Swing 基础,31,应用Swing组件的Applet import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Ex9_4 extends JApplet public void init() Container co

21、ntentPane=getContentPane(); contentPane.setLayout(new GridLayout(2,1); JButton button=new JButton(“Click me“); final JLabel label=new JLabel(); contentPane.add(button); contentPane.add(label); button.addActionListener( new ActionListener() public void actionPerformed(ActionEvent event) String inform

22、ation=JOptionPane.showInputDialog(“请输入一串字符“); label.setText(information); );/创建监听器语句结束 /init方法结束 ,9.4.3在Applet和Application中应用Swing (续) Ex9_4.java,Swing 基础,32,9.4.3在Applet和Application中应用Swing (续) Ex9_4.java运行结果,Swing 基础,33,把JApplet换成JFrame,将例9-4的程序改为Application import javax.swing.*; import java.awt.e

23、vent.*; import java.awt.*; public class Ex9_5 public static void main(String args) JFrame f=new JFrame(“Simple Swing Application”); Container contentPane=f.getContentPane(); contentPane.setLayout(new GridLayout(2,1); JButton button=new JButton(“Click me“); final JLabel label=new JLabel(); contentPan

24、e.add(button);/添加按钮 contentPane.add(label);/添加标签 button.addActionListener( new ActionListener() public void actionPerformed(ActionEvent event) String information=JOptionPane.showInputDialog(“请输入一串字符“); label.setText(information); ); f.setSize(200,100);/设置大小 f.show();/显示 f.setDefaultCloseOperation(JF

25、rame.EXIT_ON_CLOSE); ,9.4.3在Applet和Application中应用Swing (续) Ex9_5.java,Swing 基础,34,9.4.3在Applet和Application中应用Swing (续) Ex9_5.java运行结果,Swing 基础,35,9.5 Swing的特点和概念,Swing GUI 组件 javax.swing包 源于AWT(package java.awt)的组件 包括外观和感觉 外观以及用户如何和程序交互 轻量级组件 完全用Java写成,不是用当前平台的GUI功能 某些Swing组件也是重量级的,外观和功能受到本地窗口系统的限制,

26、如 java.awt.Windows的子类 java.applet.Applet的子类,36,9.5.1 Swing的组件和容器层次,绝大多数Swing组件的继承层次,Swing 的特点和概念,37,9.5.1 Swing的组件和容器层次(续),JComponent类是除了顶层容器以外所有Swing组件的基类,根据继承关系,我们可以在每个基类中找到大多数GUI组件的常见操作 Component 类 包含paint、repaint方法,可以在屏幕上绘制组件 大多数GUI组件直接或间接扩展Component Container 类 容纳相关组件 包括add方法,用来添加组件 包括setLayout

27、方法,这个方法可用来设置布局,以帮助Container对象对其中的组件进行定位和设置组件大小 JComponent 类多数Swing组件的超类 可抽换的外观和感觉,即可根据需求定制外观和感觉。 快捷键 (通过键盘直接访问GUI组件) 一般的事件处理功能,Swing 的特点和概念,38,通常将javax.swing包里的Swing组件归为三个层次 顶层容器 中间层容器 原子组件,9.5.1 Swing的组件和容器层次(续),Swing 的特点和概念,39,顶层容器 Swing提供三个顶层容器的类 JFrame 实现单个主窗口 JDialog 实现一个二级窗口(对话框) JApplet 在浏览器窗

28、口中实现一个applet显示区域 必须和操作系统打交道,所以都是重量级组件 从继承结构上来看,它们分别是从原来AWT组件的Frame、Dialog和Applet类继承而来 每个使用Swing组件的Java程序都必须至少有一个顶层容器,别的组件都必须放在这个顶层容器上才能显现出来,9.5.1 Swing的组件和容器层次(续) 顶层容器,Swing 的特点和概念,40,中间层容器 其存在的目的仅仅是为了容纳别的组件 分为两类 一般用途的 JPanel JScrollPane JSplitPane JTabbedPane JToolBar 特殊用途的 JInternalFrame JRootPane

29、 可以直接从顶层容器中获得一个JRootPane对象来直接使用,而别的中间容器使用的时候需要新建一个对象,9.5.1 Swing的组件和容器层次(续) 中间层容器,Swing 的特点和概念,41,原子组件 通常是在图形用户界面中和用户进行交互的组件 基本功能是和用户交互信息,而不像前两种组件那样是用来容纳别的组件的 根据功能的不同,可被分为三类 显示不可编辑信息的JLabel、JProgressBar、JToolTip 有控制功能、可以用来输入信息的JButton、JCheckBox、JRadioButton、JComboBox、JList、JMenu、JSlider、JSpinner、JTe

30、xComponent等 能提供格式化的信息并允许用户选择的JColorChooser、JFileChooser、JTable、JTree,9.5.1 Swing的组件和容器层次(续) 原子组件,Swing 的特点和概念,42,三层容器结构示例 import javax.swing.*; import java.awt.*; public class Ex9_6 public static void main(String args) JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame=new JFrame(“Swing Frame

31、“); Container contentPane=frame.getContentPane(); JPanel panel=new JPanel(); panel.setBorder(BorderFactory.createLineBorder(Color.black,5); panel.setLayout(new GridLayout(2,1); JLabel label=new JLabel(“Label“,SwingConstants.CENTER); JButton button=new JButton(“Button“); panel.add(label); panel.add(b

32、utton); contentPane.add(panel); frame.pack();/对组件进行排列 frame.show();/显示 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ,9.5.1 Swing的组件和容器层次(续) 例9_6,Swing 的特点和概念,43,程序说明 首先创建一个JFrame类顶级容器 然后获得顶级容器的内容面板contentPane,只有通过它才能加入其他组件。 然后创建一个JPanel类的中间容器panel,并设置边框以及布局 然后创建原子组件Label,button,并将它们添加到中间容器上

33、 然后将中间容器通过内容面板添加到顶层容器上,并/对组件进行排列,9.5.1 Swing的组件和容器层次(续) 例9_6运行结果,Swing 的特点和概念,44,9.5.1 Swing的组件和容器层次(续) Swing组件列表,Swing 的特点和概念,45,9.5.2 布局管理,如何将下级组件有秩序地摆在上一级容器中 在程序中具体指定每个组件的位置 使用布局管理器(Interface LayoutManager) 布局管理器 使用方法是通过调用容器对象的setLayout方法,并以某种布局管理器对象为参数,例如: Container contentPane = frame.getConten

34、tPane(); contentPane.setLayout(new FlowLayout(); 使用布局管理器可以更容易地进行布局,而且当改变窗口大小时,它还会自动更新版面来配合窗口的大小,不需要担心版面会因此混乱,Swing 的特点和概念,46,9.5.2 布局管理(续),在Java中有很多实现LayoutManager接口的类,经常用到的有以下几个 BorderLayout FlowLayout GridLayout CardLayout GridBagLayout BoxLayout SpringLayout 上一节提到的内容面板(content pane)默认使用的就是BorderL

35、ayout,它可以将组件放置到五个区域:东、西、南、北、中,Swing 的特点和概念,47,在该例中,引用了SUN公司提供的几个的示例程序,演示了布局管理器的使用方法和效果 BorderLayoutDemo.java及其运行效果 BorderLayout以将组件放置到五个区域:东、西、南、北、中,9.5.2 布局管理(续) 例9_7,Swing 的特点和概念,48,FlowLayoutDemo.java FlowLayout是JPanel默认使用的布局管理器,它只是简单地把组件放在一行,如果容器不是足够宽来容纳所有组件,就会自动开始新的一行,9.5.2 布局管理(续) 例9_7,Swing 的

36、特点和概念,49,GridLayoutDemo.java GridLayout将按照其构造方法中程序员提供的行数和列数将界面分为等大的若干块,组件被等大地按加载顺序放置其中,9.5.2 布局管理(续) 例9_7,Swing 的特点和概念,50,CardLayoutDemo.java CardLayout可以实现在一个区域出现不同的组件布局,就像在一套卡片中选取其中的任意一张一样。它经常由一个复选框控制这个区域显示哪一组组件,可通过组合框像选择卡片一样选择某一种布局,9.5.2 布局管理(续) 例9_7,Swing 的特点和概念,51,GridBagLayoutDemo.java GridBag

37、Layout把组件放置在网格中,这一点类似于GridLayout,但它的优点在于不仅能设置组件摆放的位置,还能设置该组件占多少行/列。这是一种非常灵活的布局管理器,9.5.2 布局管理(续) 例9_7,Swing 的特点和概念,52,BoxLayoutDemo.java BoxLayout将组件放在单一的行或列中,和FlowLayout不同的是,它可以考虑到组件的对齐方式,最大、最小、优选尺寸,9.5.2 布局管理(续) 例9_7,Swing 的特点和概念,53,SpringDemo.java SpringLayout是一种灵活的布局管理器。它能够精确指定组件之间的间距。组件之间的距离通过Sp

38、ring类的对象来表示,每个spring有四个属性,最小值,最大值,优选值和实际值。每个组件的spring对象集合在一起就构成了SpringLayout.Constraints对象,9.5.2 布局管理(续) 例9_7,Swing 的特点和概念,54,9.5.3 事件处理,GUI是由事件驱动的,一些常见的事件包括: 移动鼠标 单双击鼠标各个按钮 单击按钮 在文本字段输入 在菜单中选择菜单项 在组合框中选择、单选和多选 拖动滚动条 关闭窗口 Swing通过事件对象来包装事件,程序可以通过事件对象获得事件的有关信息,Swing 的特点和概念,55,9.5.3 事件处理(续) Swing组件的事件对

39、象,Swing 的特点和概念,56,编写事件处理程序时,要注意三个概念 事件源 与用户进行交互的GUI组件,表示事件来自于哪个组件或对象 比如要对按钮被按下这个事件编写处理程序,按钮就是事件源 事件监听器 负责监听事件并做出响应 一旦它监视到事件发生,就会自动调用相应的事件处理程序作出响应 事件对象 封装了有关已发生的事件的信息 例如按钮被按下就是一个要被处理的事件,当用户按下按钮时,就会产生一个事件对象。事件对象中包含事件的相关信息和事件源,9.5.3 事件处理(续) 事件处理机制的三个部分,Swing 的特点和概念,57,程序员应完成的两项任务 为事件源注册一个事件监听器 实现事件处理方法

40、,9.5.3 事件处理(续) 程序员应完成的两项任务,Swing 的特点和概念,58,事件源 提供注册监听器或取消监听器的方法 维护一个已注册的监听器列表,如有事件发生,就会通知每个已注册的监听器 一个事件源可以注册多个事件监听器,每个监听器又可以对多种事件进行相应,例如一个JFrame事件源上可以注册 窗口事件监听器,响应 窗口关闭 窗口最大化 窗口最小化 鼠标事件监听器,响应 鼠标点击 鼠标移动,9.5.3 事件处理(续) 事件源,Swing 的特点和概念,59,事件监听器 是一个对象,通过事件源的addListener方法被注册到某个事件源上 不同的Swing组件可以注册不同的事件监听器

41、 一个事件监听器中可以包含有对多种具体事件的专用处理方法 例如用于处理鼠标事件的监听器接口MouseListener中就包含有对应于鼠标压下、放开、进入、离开、敲击五种事件的相应方法mousePressed、mouseReleased、mouseEntered、mouseExited、mouseClicked,这五种方法都需要一个事件对象作为参数,9.5.3 事件处理(续) 事件监听器,Swing 的特点和概念,60,通常我们用到的事件对象有 ActionEvent 发生在按下按钮、选择了一个项目、在文本框中按下回车键 ItemEvent 发生在具有多个选项的组件上,如JCheckBox、JC

42、omboBox ChangeEvent 用在可设定数值的拖曳杆上,例如JSlider、JProgressBar等 WindowEvent 用在处理窗口的操作 MouseEvent 用于鼠标的操作,9.5.3 事件处理(续) 事件对象,Swing 的特点和概念,61,9.5.3 事件处理(续) Swing事件源可能触发的事件及对应的事件监听器,Swing 的特点和概念,62,9.5.3 事件处理(续) Swing事件源可能触发的事件及对应的事件监听器,Swing 的特点和概念,63,9.5.3 事件处理(续) Swing事件源可能触发的事件及对应的事件监听器,Swing 的特点和概念,64,事件

43、监听器接口 例如MouseListener是一个接口,为了在程序中创建一个鼠标事件监听器的对象,我们需要实现其所有五个方法,在方法体中,我们可以通过鼠标事件对象传递过来的信息(例如点击的次数,坐标),实现各种处理功能 事件监听器适配器类 有时我们并不需要对所有事件进行处理,为此Swing提供了一些适配器类Adapter,这些类含有所有Listener中方法的默认实现(就是什么也不做),因此我们就只需编写那些需要进行处理的事件的方法。例如,如果只想对鼠标敲击事件进行处理,如果使用MouseAdapter类,则只需要重写mouseClicked方法就可以了,9.5.3 事件处理(续) 事件监听器接

44、口和事件监听器适配器类,Swing 的特点和概念,65,实现事件监听器接口 这种方法需要实现接口中所有的方法,对我们不需要进行处理的事件方法,也要列出来,其方法体使用一对空的花括号 继承事件监听器适配器类 只需要重写我们感兴趣的事件 使用匿名内部类 特别适用于已经继承了某个父类(例如Applet程序,主类必须继承JApplet类或Applet类),则根据java语法规则,就不能再继承适配器类的情况,而且使用这种方法程序看起来会比较清楚明了,9.5.3 事件处理(续) 三种实现事件处理的方法,Swing 的特点和概念,66,创建一窗口,当鼠标在窗口中点击时,在窗口标题栏中显示点击位置坐标。方法一

45、:实现MouseListener接口 import java.awt.event.*; /载入MouseListener类所在的包 import javax.swing.*; /载入JFrame所在的包 public class Ex9_8_1 implements MouseListener JFrame f; public Ex9_8_1() f=new JFrame(); /新建一窗口 f.setSize(300,150); f.show(); f.addMouseListener(this); /为窗口增加鼠标事件监听器 f.setDefaultCloseOperation(JFram

46、e.EXIT_ON_CLOSE); public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseClicked(MouseEvent e) f.setTitle(“点击坐标为 (“+e.getX()+“, “+e.getY public static void main(String args) new Ex9_

47、8_1(); ,9.5.3 事件处理(续) 例9_8_1,Swing 的特点和概念,67,继承MouseAdapter类 import java.awt.event.*; /载入MouseAdapter所在的包 import javax.swing.*; public class Ex9_8_2 extends MouseAdapter JFrame f; public Ex9_8_2() f=new JFrame(); f.setSize(300,150); f.show(); f.addMouseListener(this); f.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); public void mouseClicked(MouseEvent e) f.setTitle(“点击坐标为 (“+e.getX()+“, “+e.getY()+“)“); public static void main(String args) new

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1