java语言程序设计(第三版清华)7、8章.ppt_第1页
java语言程序设计(第三版清华)7、8章.ppt_第2页
java语言程序设计(第三版清华)7、8章.ppt_第3页
java语言程序设计(第三版清华)7、8章.ppt_第4页
java语言程序设计(第三版清华)7、8章.ppt_第5页
已阅读5页,还剩208页未读 继续免费阅读

下载本文档

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

文档简介

1、1,第9章 图形用户界面,-Java 2实用教程7、8章,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),被浏览器加载和执行,被浏览器加载和执行,4,9.1 Applet 概述,Java Applet 一种嵌入HTML文档中的Java程序 与Application相比,Applet具有明显的优点 web浏览器提供了运行Applet所需要的许多功能 A

2、pplet是在运行时通过网络从服务器端下载的,因而便于软件的发布和及时更新 Applet也有其局限性, 不能在客户机上读写当地文件 也不能连接除它所在的服务器以外的其它机器,5,在浏览器中加载一个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类的对象,是由浏览

3、器传递过来的 super.paint(g); /调用其超类JApplet类的paint方法 g.drawString(This is a Java Applet!,25,25); ,9.1 Applet概述(续) 例9_1,Applet概述,6,在NetBeans IDE中运行,9.1 Applet概述(续) 例9_1运行结果,Applet概述,7,编译ex9_1.java产生字节码文件ex9_1.class。接下来就需要编写一个HTML文件ex9_1.html来嵌入ex9_1.class 将ex9_1.html文件和Ex9_1.class文件放在同一个目录下。现在,在浏览器中打开这个HTML

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

5、,所以我们在编写自己的applet时,就可以不必写出全部方法,只要继承这个JApplet,然后重写特定的方法来增加特殊功能,9,9.2 Applet应用程序接口,Applet应用程序接口,10,9.2 Applet应用程序接口(续),Applet应用程序接口,11,轻量级组件:是用JAVA代码画出来的,这样具有平台移植性 它使用AWT最好的部分来建立一个新的轻量组件集,而丢弃了AWT中有问题的重量组件部分(除JFrame, JDialog, JApplet, JInternalFrame, JWindow 外) Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级组件

6、,没有本地代码,不依赖操作系统的支持,因此Swing在不同的平台上表现一致 重量级组件:是调用操作系统的函数画出来的组件,比如主窗体。 java.awt里面的是重量级的 受平台影响,12,repaint() 执行:update()方法,先刷新屏幕(以背景填充),再调用 paint()方法重画。 一般可以重载update()和paint()方法,13,import javax.swing.*;. import java.awt.*; public class HelloSwingApplet extends JApplet public void init() JLabel label = ne

7、w JLabel( You are successfully running a Swing applet!); label.setHorizontalAlignment(JLabel.CENTER); label.setBorder(BorderFactory.createMatteBorder( 1,1,2,2,Color.black); getContentPane().add(label, BorderLayout.CENTER); ,9.2 Applet应用程序接口(续) HelloSwingApplet.java,Applet应用程序接口,14,9.3 绘图,图形环境和图形对象 颜

8、色和字体 使用Graphics类绘图 使用Graphics2D类绘图,15,9.3.1 图形环境和图形对象,坐标 GUI组件的左上角坐标默认为(0,0) 从左上角到右下角,水平坐标x和垂直坐标y增加。 坐标的单位是象素 Graphics对象 Graphics对象是专门管理图形环境的。Graphics类是一个抽象类 设计一个抽象类Graphics可以给程序员提供一个与平台无关的绘图接口,因而程序员就可以以独立于平台的方式来使用图形。在各个平台上实现的Java系统将创建Graphics类的一个子类,来实现绘图功能,但是这个子类对程序员是透明的,也就是说我们只能看得到Graphics类,却不必关心其

9、实现 在执行paint方法时,系统会传递一个指向特定平台的Graphics子类的图形对象g,绘 图,16,9.3.2 颜色和字体,Java中有关颜色的类是Color类,它在java.awt包中,这个类声明了用于操作Java程序中颜色的方法和常量,绘 图,17,9.3.2 颜色和字体,Font类有关字体控制,在java.awt包中,绘 图,18,9.3.3 使用Graphics类绘图,Graphics类 其对象可以绘制文本、线条、矩形、多边形、椭圆、弧等多种图形,绘 图,21,用各种颜色绘制文字及各种图形 import java.awt.*; import javax.swing.*; publ

10、ic class Ex9_2 extends JFrame public Ex9_2() super( “演示字体、颜色、绘图” ); /调用基类构造方法 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.dr

11、awString(字体ScanSerif,粗体,12号,蓝色,20,50);,9.3.3 使用Graphics类绘图(续) Ex9_2.java,绘 图,22,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.fil

12、lRect(130,70,100,50); /绘制实心矩形 g.setColor(Color.yellow); g.drawRoundRect(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.j

13、ava,绘 图,23,g.setColor(Color.pink); g.drawOval(240,130,100,50); /绘制空心椭圆 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 yV

14、alues=210,210,190,210,210,220,230,220,230,220; g.drawPolygon(xValues,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,绘 图,24,public static void main( String args ) JFrame.setDefaultLookAndFeelD

15、ecorated(true); /设置窗口的外观感觉为Java默认 Ex9_2 application = new Ex9_2(); application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); 运行结果,9.3.3 使用Graphics类绘图(续) Ex9_2.java运行结果,绘 图,25,9.3.4 使用Graphics2D类绘图,Java2D API 提供了高级的二维图形功能 分布在java.awt、java.awt.image、java.awt.color、java.awt.font、java.awt.geom、java.a

16、wt.print和java.awt.image.renderable包中 它能轻松使你完成以下功能: 绘制任何宽度的直线 用渐变颜色和纹理来填充图形 平移、旋转、伸缩、切变二维图形,对图像进行模糊、锐化等操作 构建重叠的文本和图形,绘 图,26,Graphics2D类 要想使用Java2D API,就必须通过一个该类的对象 Graphics2D类是Graphics类的抽象子类 要访问Graphics2D功能,必须使用如下语句将传递给paint方法的Graphics引用强制转换为Graphics2D引用: Graphics2D g2d=(Graphics2D)g,9.3.4 使用Graphics

17、2D类绘图(续),绘 图,27,实现例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 Applet

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

19、UI 组件和服务的完整集合 作为J2SE 的一个有机部分,主要包含5 个部分 AWT Java2D Accessibility Drag import java.awt.event.*; import javax.swing.*; public class Ex9_4 extends JApplet public void init() /获取浏览器提供的顶层容器的内容面板 Container contentPane=getContentPane(); contentPane.setLayout(new GridLayout(2,1); JButton button=new JButton(C

20、lick me); final JLabel label=new JLabel(); contentPane.add(button); contentPane.add(label); button.addActionListener( new ActionListener() public void actionPerformed(ActionEvent event) String information=JOptionPane.showInputDialog(请输入一串字符); label.setText(information); );/创建监听器语句结束 /init方法结束 ,9.4.3

21、在Applet和Application中应用Swing (续) Ex9_4.java,Swing 基础,35,9.4.3在Applet和Application中应用Swing (续) Ex9_4.java运行结果,Swing 基础,36,把JApplet换成JFrame,将例9-4的程序改为Application import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Ex9_5 public static void main(String args) /创建Frame窗体 JFrame f=

22、new JFrame(“Simple Swing Application”); /获取f的容器面板 Container contentPane=f.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 Actio

23、nListener() public void actionPerformed(ActionEvent event) String information=JOptionPane.showInputDialog(请输入一串字符); label.setText(information); ); f.setSize(200,100);/设置大小 f.show();/显示 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ,9.4.3在Applet和Application中应用Swing (续) Ex9_5.java,Swing 基础,37,9.4.

24、3在Applet和Application中应用Swing (续) Ex9_5.java运行结果,Swing 基础,38,9.5 Swing的特点和概念,Swing GUI 组件 javax.swing包 源于AWT(package java.awt)的组件 包括外观和感觉 外观以及用户如何和程序交互 轻量级组件 完全用Java写成,不是用当前平台的GUI功能 某些Swing组件也是重量级的,外观和功能受到本地窗口系统的限制,如 java.awt.Windows的子类 java.applet.Applet的子类,39,9.5.1 Swing的组件和容器层次(续),JComponent类是除了顶层

25、容器以外所有Swing组件的基类,根据继承关系,我们可以在每个基类中找找到大多数GUI组件的常见操作 java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent,Swing 的特点和概念,40,Component 类 包含paint、repaint方法,可以在屏幕上绘制组件 大多数GUI组件直接或间接扩展Component Container 类 容纳相关组件 包括add方法,用来添加组件 包括setLayout方法,这个方法可用来设置布局,以帮助Container对象对其中的组件进行定位和设置组件

26、大小 JComponent 类多数Swing组件的超类 可抽换的外观和感觉,即可根据需求定制外观和感觉。 快捷键 (通过键盘直接访问GUI组件) 一般的事件处理功能,41,通常将javax.swing包里的Swing组件归为三个层次 顶层容器 中间层容器 原子组件,9.5.1 Swing的组件和容器层次(续),Swing 的特点和概念,42,顶层容器 Swing提供三个顶层容器的类 JFrame 实现单个主窗口 JDialog 实现一个二级窗口(对话框) JApplet 在浏览器窗口中实现一个applet显示区域 必须和操作系统打交道,所以都是重量级组件 从继承结构上来看,它们分别是从原来AW

27、T组件的Frame、Dialog和Applet类继承而来 每个使用Swing组件的Java程序都必须至少有一个顶层容器,别的组件都必须放在这个顶层容器上才能显现出来,9.5.1 Swing的组件和容器层次(续) 顶层容器,Swing 的特点和概念,43,中间层容器 其存在的目的仅仅是为了容纳别的组件 分为两类 一般用途的 JPanel JScrollPane JSplitPane JTabbedPane JToolBar 特殊用途的 JInternalFrame JRootPane,9.5.1 Swing的组件和容器层次(续) 中间层容器,Swing 的特点和概念,44,原子组件 通常是在图形

28、用户界面中和用户进行交互的组件 基本功能是和用户交互信息,而不像前两种组件那样是用来容纳别的组件的 根据功能的不同,可被分为三类 显示不可编辑信息的JLabel、JProgressBar、JToolTip 有控制功能、可以用来输入信息的JButton、JCheckBox、JRadioButton、JComboBox、JList、JMenu、JSlider、JSpinner、JTexComponent等 能提供格式化的信息并允许用户选择的JColorChooser、JFileChooser、JTable、JTree,9.5.1 Swing的组件和容器层次(续) 原子组件,Swing 的特点和概念

29、,45,三层容器结构示例 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); Container contentPane=frame.getContentPane(); /获得容器面板 JPanel panel=new JPanel(); panel.setBorder(BorderFact

30、ory.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(button); contentPane.add(panel); frame.pack();/对组件进行排列 frame.show();/显示 frame.setDefaultCloseOperation(JFram

31、e.EXIT_ON_CLOSE); ,9.5.1 Swing的组件和容器层次(续) 例9_6,Swing 的特点和概念,46,组件,容器,容器,容器,47,Container(顶层容器),JApplet,JDialog (对话框),JFrame (窗口),48,中 间 容 器,JScrollPane,JTabbedPane,JSplitPane,JPanel,JToolBar,49,50,9.5.1 Swing的组件和容器层次(续) Swing组件列表,Swing 的特点和概念,51,9.5.3 事件处理,GUI是由事件驱动的,一些常见的事件包括: 移动鼠标 单双击鼠标各个按钮 单击按钮 在文

32、本字段输入 在菜单中选择菜单项 在组合框中选择、单选和多选 拖动滚动条 关闭窗口 Swing通过事件对象来包装事件,程序可以通过事件对象获得事件的有关信息,Swing 的特点和概念,52,9.5.3 事件处理(续) Swing组件的事件对象,Swing 的特点和概念,53,编写事件处理程序时,要注意三个概念 事件源 与用户进行交互的GUI组件,表示事件来自于哪个组件或对象 比如要对按钮被按下这个事件编写处理程序,按钮就是事件源 事件监听器 负责监听事件并做出响应 一旦它监视到事件发生,就会自动调用相应的事件处理程序作出响应 事件对象 封装了有关已发生的事件的信息 例如按钮被按下就是一个要被处理

33、的事件,当用户按下按钮时,就会产生一个事件对象。事件对象中包含事件的相关信息和事件源,9.5.3 事件处理(续) 事件处理机制的三个部分,Swing 的特点和概念,54,程序员应完成的两项任务 为事件源注册一个事件监听器 实现事件处理方法,9.5.3 事件处理(续) 程序员应完成的两项任务,Swing 的特点和概念,55,56,通常我们用到的事件对象有 ActionEvent 发生在按下按钮、选择了一个项目、在文本框中按下回车键如:button, JList, JTextFiled, JTextArea ItemEvent 发生在具有多个选项的组件上,如JCheckBox、JComboBox

34、ChangeEvent 用在可设定数值的拖曳杆上,例如JSlider、JProgressBar等 WindowEvent 用在处理窗口的操作 MouseEvent 用于鼠标的操作,9.5.3 事件处理(续) 事件对象,Swing 的特点和概念,57,9.5.3 事件处理(续) Swing事件源可能触发的事件及对应的事件监听器,Swing 的特点和概念,58,9.5.3 事件处理(续) Swing事件源可能触发的事件及对应的事件监听器,Swing 的特点和概念,59,9.5.3 事件处理(续) Swing事件源可能触发的事件及对应的事件监听器,Swing 的特点和概念,60,常用组件与对应的接口

35、、监视器、实现方法,61,实现事件监听器接口 这种方法需要实现接口中所有的方法,对我们不需要进行处理的事件方法,也要列出来,其方法体使用一对空的花括号 继承事件监听器适配器类 有时我们并不需要对所有事件进行处理,为此Swing提供了一些适配器类Adapter,这些类含有所有Listener中方法的默认实现(就是什么也不做),因此我们就只需编写那些需要进行处理的事件的方法。例如,如果只想对鼠标敲击事件进行处理,如果使用MouseAdapter类,则只需要重写mouseClicked方法就可以了 使用匿名内部类 匿名内部类(Anonymous Inner Class),即是没有名字的内部类,这是J

36、ava为了方便我们编写程序而设计的一个机制。因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适,而且也免去了给它取名字的烦恼 特别适用于已经继承了某个父类(例如Applet程序,主类必须继承JApplet类或Applet类),则根据java语法规则,就不能再继承适配器类的情况,而且使用这种方法程序看起来会比较清楚明了,9.5.3 事件处理(续) 三种实现事件处理的方法,Swing 的特点和概念,创建一窗口,当鼠标在窗口中点击时,在窗口标题栏中显示点击位置坐标。 方法一:实现MouseListener接口 import java.awt.ev

37、ent.*; /载入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(JFrame.EXIT_ON_CLOSE); public void mousePr

38、essed(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_8_1(); ,9.5.3 事件处理(续) 例9_8_1,Swing 的特点和概念

39、,实现所有接口方法, 哪怕什么也不做,63,方法二:继承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);

40、public void mouseClicked(MouseEvent e) f.setTitle(点击坐标为 (+e.getX()+, +e.getY()+); public static void main(String args) new Ex9_8_2(); ,9.5.3 事件处理(续) 例9_8_2,Swing 的特点和概念,64,方法三:使用匿名内部类 import java.awt.event.*; import javax.swing.*; public class Ex9_8_3 JFrame f; public Ex9_8_3() f=new JFrame(); f.set

41、Size(300,150); f.show(); f.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) f.setTitle(点击坐标为 (+e.getX()+, +e.getY()+); ); /为窗口添加鼠标事件监听器语句结束 f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );/为窗口添加窗口事件监听器语句结束 public static voi

42、d main(String args) new Ex9_8_3(); ,9.5.3 事件处理(续) 例9_8_3,Swing 的特点和概念,65,采用三种不同方法的程序,其运行效果都是一样的,当鼠标在窗口中点击的时候,窗口标题栏将出现所点位置的坐标信息,9.5.3 事件处理(续) 例9_8运行结果,Swing 的特点和概念,66,9.6.3 原子组件,Swing原子组件有很多种, 与顶层容器和中间容器相比,原子组件用法都比较简单 可将其分为三类 显示不可编辑信息 JLabel、JProgressBar、JToolTip 有控制功能、可以用来输入信息 JButton、JCheckBox、JRad

43、ioButton、JComboBox、JList、JMenu、JSlider、JSpinner、JTextComponent 能提供格式化的信息并允许用户选择 JColorChooser、JFileChooser、JTable、JTree,Swing 组件,67,各 类 组 件,Menu,Text Field,Text Area,Button,Label,JChoice Button,JRadioButton,JCombo Box,JProgress Bar,Single List,JCheckbox,Example9/src RadioButtonDemo.java CheckBoxDemo

44、.java,68,JLabel 该组件上可以显示文字和图像,并能指定两者的位置 提示信息 通常不必直接处理JToolTip类 通常使用setToolTipText()方法为组件设置提示信息 有的组件例如JTabbedPane由多个部分组成,需要鼠标在不同部分停留时显示不同的提示信息,这时可以在其addTab()方法中设置提示信息参数,也可以通过setTooltipTextAt方法进行设置,9.6.2 原子组件(续) 第一类原子组件,Swing 组件,69,7.4 标签 Labels,Used to provide text instructions or information on a GU

45、I. Displays a single line of read-only text. Must be instantiated with a call a constructor Several Label constructors and methods are shown below:,70,Label(): constructs an empty label-text is not displayed. Label(String s): constructs a Label that displays the text s with left-justed alignment Lab

46、el(String s, int alignment):constructs a Label that displays the text s with the specified alignment. Usually, possible alignments are Label.LEFT, Label.CENTER, and Label.RIGHT,71,getText(): returns the Label text setText(String s): sets the Label text /read-only string setAlignment(int alignment):

47、sets the label alignment to Label.LEFT, Label.CENTER and Label.RIGHT,72,setBackgroun(Color c): sets color for the background setForeground(Color c): sets color for the string in the label Example LabelDemo demonstrate the class Label. Example: LabelTest.java,返回,73,7.3 文本框,java.awt包中的类TextField类创建文本框

48、 用户可以在文本框输入单行的文本 ,74,1.TextField类的主要方法,TextField(int x) 如果使用这个构造方法创建文本框对象,文本框中的可见字符序列的长度为 x个机器字符长。文本框是可编辑的,用户可以在文本框中输入若干个字符。 TextField(String s ) 如果使用这个构造方法创建文本框对象,则文本框的初始字符串为s。文本框是可编辑的,可以在文本框中输入若干个字符。 TextField(String s, int x): Constructs a TextField object displaying a string with the length of T

49、extField public void setText(String s) 文本框对象调用该方法可以设置文本框中的文本为参数s指定的文本,文本框中先前的文本将被清除。 public String getText() 文本框对象调用该方法可以获取文本框中的文本。,75,setEchoChar(char c): Set the character c to be displayed. Used for password. setEditable(boolean b): Set the editibility of the TextFeild, true is for editable, fals

50、e is for uneditable public void addActionListener(ActionListener l) 文本框对象调用该方法可以向文本框增加动作监视器(将监视器注册到文本框)。 例子:Example8_1.java,76,import java.applet.*; import java.awt.*; public class Example8_1 extends Applet TextField text1, text2, text3; public void init() text1 = new TextField(Password: ,10 ); text

51、1.setEditable(false); text2 = new TextField(10); text2.setEchoChar(*); text3 = new TextField(I am a text filed, 20); text3.setText(Change); add(text1); add(text2); add(text3); ,77,Example7_3.java (this as listener) Example8_2.java (other object as listener) (见后),78,import java.awt.*; import java.awt

52、.event.*; class MyWindow extends Frame implements ActionListener TextField text1,text2,text3; MyWindow() setLayout(new FlowLayout(); text1=new TextField(8); text2=new TextField(8); text3=new TextField(15); add(text1); add(text2); add(text3); /事件源text1、1调用addActionListener(),将本类对象作为监视器 text1.addActio

53、nListener(this); text2.addActionListener(this); setBounds(100,100,150,150); setVisible(true); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=text1) String word=text1.getText(); if(word.equals(boy) text3.setText(男孩); else if (word.equals(girl) text3.setText(女孩); else if (word

54、.equals(sun) text3.setText(太阳); ,else text3.setText(没有该单词); else if(e.getSource()=text2) String word=text2.getText(); if(word.equals(男孩) text3.setText(boy); else if (word.equals(女孩) text3.setText(girl); else if (word.equals(太阳) text3.setText(sun); else text3.setText(没有该单词); public class Example7_3 p

55、ublic static void main(String args) MyWindow win=new MyWindow(); ,79,import java.applet.*; import java.awt.*; import java.awt.event.*; public class Example8_2 extends Applet static TextField text1, text2, text3; Teacher teacher; public void init() text1 = new TextField(10); text2 = new TextField(10)

56、; / text3 = new TextField(10); add(text1); add(text2); /add(text3); text2.setBackground(Color.red); teacher = new Teacher(); /事件源text1调用addActionListener(),将Teacher类对象作为监视器 text1.addActionListener(teacher); ,80,class Teacher implements ActionListener public void actionPerformed (ActionEvent e) if (

57、e.getSource() = Example8_2.text1) ,返回,81,JProgressBar 在一些软件运行时,会出现一个进度条告知目前进度如何。通过使用该组件我们可以轻松地为软件加上一个进度条 随时间增加,进度条输出进度变化情况,同时标签上显示出当前进度。鼠标移到两组件时,显示提示信息,9.6.2 原子组件(续) 例9_9,Swing 组件,82,import javax.swing.*; import java.awt.*; import javax.swing.event.*; import java.awt.event.*; public class Ex9_9 implements ChangeListener JLabel label; JProgressBar pb; public Ex9_9() int value=0; JFrame f=new JFrame(第一类原子组件演示); Container contentPane=f.getContentPane (); label=new JLabel(,JLabel.CENTER); label.setTool

温馨提示

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

最新文档

评论

0/150

提交评论