图形用户界面程序设计.ppt
《图形用户界面程序设计.ppt》由会员分享,可在线阅读,更多相关《图形用户界面程序设计.ppt(171页珍藏版)》请在三一办公上搜索。
1、1,图形用户界面程序设计,JAVA程序设计,汪华登桂林电子科技大学计算机科学与工程学院,2,目录,5.1 Applet 概述5.2 Applet应用程序接口5.3 绘图5.4 Swing基础5.5 Swing的特点和概念5.6 Swing组件5.7 其它Swing特性5.8 本章小结(说明:本章部分例题出自java_tutorial_sun),3,5.1 Applet 概述,Java Applet一种嵌入HTML文档中的Java程序与Application相比,Applet具有明显的优点web浏览器提供了运行Applet所需要的许多功能Applet是在运行时通过网络从服务器端下载的,因而便于软
2、件的发布和及时更新Applet也有其局限性,不能在客户机上读写当地文件也不能连接除它所在的服务器以外的其它机器,4,在浏览器中加载一个Applet,功能是显示一个字符串“This is a Java Applet!”import;import;public class Ex5_1 extends JApplet public void paint(Graphics g)/重载JApplet类的paint方法/参数是Graphics类的对象,是由浏览器传递过来的 super.paint(g);/调用其超类JApplet类的paint方法 g.drawString(This is a Java A
3、pplet!,25,25);,5.1 Applet概述(续)例5_1,Applet概述,5,在NetBeans IDE中运行,5.1 Applet概述(续)例5_1运行结果,Applet概述,6,编译ex5_1.java产生字节码文件ex5_1.class。接下来就需要编写一个HTML文件ex5_1.html来嵌入ex5_1.class将ex5_1.html文件和Ex5_1.class文件放在同一个目录下。现在,在浏览器中打开这个HTML文件,当浏览器遇到Applet标记时,就会自动载入指定的class文件,就会实现在屏幕上绘制一串字符的效果,5.1 Applet概述(续)例5_1运行结果,A
4、pplet概述,7,5.2 Applet应用程序接口,JApplet类一个applet程序需要继承javax.swing包中的JApplet类,也可以继承老的AWT组件中的Applet类,JApplet类属于新的Swing组件提供了applet在浏览器中运行需要具备的特定方法浏览器载入时,要依次运行init、start、paint方法离开浏览器页面时,执行stop退出浏览器时,执行destroy 提供了所有这些方法的默认实现,所以我们在编写自己的applet时,就可以不必写出全部方法,只要继承这个JApplet,然后重写特定的方法来增加特殊功能,8,5.2 Applet应用程序接口,Apple
5、t应用程序接口,9,5.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.setHorizontalAlignment(JLabel.CENTER);label.setBorder(BorderFactory.create
6、MatteBorder(1,1,2,2,Color.black);getContentPane().add(label,BorderLayout.CENTER);,5.2 Applet应用程序接口(续)HelloSwingApplet.java,Applet应用程序接口,11,5.3 绘图(了解),图形环境和图形对象颜色和字体使用Graphics类绘图使用Graphics2D类绘图,12,5.3.1 图形环境和图形对象,坐标GUI组件的左上角坐标默认为(0,0)从左上角到右下角,水平坐标x和垂直坐标y增加。坐标的单位是象素Graphics对象Graphics对象是专门管理图形环境的。Graph
7、ics类是一个抽象类设计一个抽象类Graphics可以给程序员提供一个与平台无关的绘图接口,因而程序员就可以以独立于平台的方式来使用图形。在各个平台上实现的Java系统将创建Graphics类的一个子类,来实现绘图功能,但是这个子类对程序员是透明的,也就是说我们只能看得到Graphics类,却不必关心其实现在执行paint方法时,系统会传递一个指向特定平台的Graphics子类的图形对象g,绘 图,13,5.3.2 颜色和字体,Java中有关颜色的类是Color类,它在java.awt包中,这个类声明了用于操作Java程序中颜色的方法和常量,绘 图,14,5.3.2 颜色和字体,Font类有关
8、字体控制,在java.awt包中,绘 图,15,5.3.3 使用Graphics类绘图,Graphics类其对象可以绘制文本、线条、矩形、多边形、椭圆、弧等多种图形,绘 图,18,用各种颜色绘制文字及各种图形import java.awt.*;import javax.swing.*;public class Ex5_2 extends JFrame public Ex5_2()super(“演示字体、颜色、绘图”);/调用基类构造方法 setSize(480,250);/设置窗口大小 setVisible(true);/显示窗口 public void paint(Graphics g)su
9、per.paint(g);/call superclasss paint method g.setFont(new Font(SansSerif,Font.BOLD,12);g.setColor(Color.blue);/设置颜色 g.drawString(字体ScanSerif,粗体,12号,蓝色,20,50);,5.3.3 使用Graphics类绘图(续)Ex5_2.java,绘 图,19,g.setFont(new Font(Serif,Font.ITALIC,14);g.setColor(new Color(255,0,0);g.drawString(字体Serif,斜体,14号,红色
10、,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.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,
11、true);/绘制突起效果空心矩形 g.fill3DRect(130,130,100,50,false);/绘制凹陷效果实心矩形,5.3.3 使用Graphics类绘图(续)Ex5_2.java,绘 图,20,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,150,100,50,0,50);/绘制一段圆弧 g.fillArc(130,150,100,50,0,50);/绘
12、制扇形 g.setColor(Color.black);int xValues=250,280,250,300,330,310,320,250,260,270;int yValues=210,210,150,210,210,220,230,220,230,220;g.drawPolygon(xValues,yValues,10);/绘制空心多边形 int xValues2=360,350,400,410,440,420,430,400,370,380;g.fillPolygon(xValues2,yValues,10);/绘制实心多边形,5.3.3 使用Graphics类绘图(续)Ex5_2.
13、java,绘 图,21,public static void main(String args)JFrame.setDefaultLookAndFeelDecorated(true);/设置窗口的外观感觉为Java默认 Ex5_2 application=new Ex5_2();application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);运行结果,5.3.3 使用Graphics类绘图(续)Ex5_2.java运行结果,绘 图,22,5.3.4 使用Graphics2D类绘图,Java2D API提供了高级的二维图形功能分布在java.
14、awt、和包中它能轻松使你完成以下功能:绘制任何宽度的直线用渐变颜色和纹理来填充图形平移、旋转、伸缩、切变二维图形,对图像进行模糊、锐化等操作构建重叠的文本和图形,绘 图,23,Graphics2D类要想使用Java2D API,就必须通过一个该类的对象是Graphics类的抽象子类事实上,所有的paint方法用于绘图操作的对象实际上是Graphics2D的一个子类实例,该实例传递给paint方法,并被向上转型为Graphics类的实例。要访问Graphics2D功能,必须使用如下语句将传递给paint方法的Graphics引用强制转换为Graphics2D引用:Graphics2D g2d=
15、(Graphics2D)g,5.3.4 使用Graphics2D类绘图(续),绘 图,24,实现例5_1的功能,使用Java2D使文字出现渐变色效果import java.awt.*;import javax.swing.*;public class Ex5_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.drawStrin
16、g(This is a Java Applet!,25,25);,5.3.4 使用Graphics2D类绘图(续)Ex5_3.java,绘 图,25,5.3.4 使用Graphics2D类绘图(续)Ex5_3.java运行结果,绘 图,26,5.4 Swing基础,前面介绍了如何在屏幕上绘制普通的图形,但如果需要绘制一个按钮,并使其可以对点击事件作出响应,就需要使用java Swing提供的组件其实前面我们已经用到的JFrame、JApplet都是Swing组件,它们分别代表窗口组件和Applet容器组件,27,5.4.1 JFC与Swing,JFCJava Foundation Classe
17、s(Java基础类)的缩写是关于GUI 组件和服务的完整集合作为J2SE 的一个有机部分,主要包含5 个部分AWTJava2DAccessibilityDrag&DropSwingSwingJFC 的一部分提供按钮、窗口、表格等所有的组件纯Java组件(完全用Java写的),Swing 基础,28,5.4.2 Swing与AWT,早期版本的AWT组件在java.awt包里,包括Button、Checkbox、Scrollbar等,都是Component类的子类大部分含有native code,所以随操作系统平台的不同会显示出不同的样子,而不能进行更改,是重量级组件(heavyweight co
18、mponents)没有弹性、缺乏效率,Swing 基础,29,较新的Swing组件其名称都是在原来AWT组件名称前加上J,例如JButton、JCheckBox、JScrollbar等,都是JComponent类的子类Java1.2推出,架构在 AWT 之上,是AWT的扩展而不是取代完全是由java语言编写的,其外观和功能不依赖于任何由宿主平台的窗口系统所提供的代码,是轻量级组件(lightweight components)可提供更丰富的视觉感受,被越来越多地使用,5.4.2 Swing与AWT,Swing 基础,30,5.4.3 在Applet和Application中应用Swing,在A
19、pplet中应用Swing,就是要将Swing组件加载到Applet容器上(通常是JApplet),这通常在init方法中完成在Application中应用Swing,也是要将Swing组件加载到这个Application的顶层容器(通常是JFrame)中,Swing 基础,31,应用Swing组件的Appletimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class Ex5_4 extends JApplet public void init()Container contentPane=getCo
20、ntentPane();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 information=JOptionPane.showInpu
21、tDialog(请输入一串字符);label.setText(information););/创建监听器语句结束/init方法结束,在Applet和Application中应用Swing(续)Ex5_4.java,Swing 基础,32,在Applet和Application中应用Swing(续)Ex5_4.java运行结果,Swing 基础,33,把JApplet换成JFrame,将例5-4的程序改为Applicationimport javax.swing.*;import.*;import java.awt.*;public class Ex5_5 public static void
22、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();contentPane.add(button);/添加按钮 contentPane.add(label);/添加标签 button.addActionListener
23、(new ActionListener()public void actionPerformed(ActionEvent event)String information=JOptionPane.showInputDialog(请输入一串字符);label.setText(information););f.setSize(200,100);/设置大小 f.show();/显示 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,在Applet和Application中应用Swing(续)Ex5_5.java,Swing 基础,34,在Applet
24、和Application中应用Swing(续)Ex5_5.java运行结果,Swing 基础,35,5.5 Swing的特点和概念,Swing GUI 组件javax.swing包源于AWT(package java.awt)的组件包括外观和感觉外观以及用户如何和程序交互轻量级组件完全用Java写成,不是用当前平台的GUI功能某些Swing组件也是重量级的,外观和功能受到本地窗口系统的限制,如的子类的子类,36,5.5.1 Swing的组件和容器层次,绝大多数Swing组件的继承层次,Swing 的特点和概念,37,5.5.1 Swing的组件和容器层次(续),JComponent类是除了顶层
25、容器以外所有Swing组件的基类,根据继承关系,我们可以在每个基类中找到大多数GUI组件的常见操作Component 类包含paint、repaint方法,可以在屏幕上绘制组件大多数GUI组件直接或间接扩展ComponentContainer 类容纳相关组件包括add方法,用来添加组件包括setLayout方法,这个方法可用来设置布局,以帮助Container对象对其中的组件进行定位和设置组件大小JComponent 类多数Swing组件的超类可抽换的外观和感觉,即可根据需求定制外观和感觉。快捷键(通过键盘直接访问GUI组件)一般的事件处理功能,Swing 的特点和概念,38,通常将javax
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形 用户界面 程序设计
链接地址:https://www.31ppt.com/p-6558698.html