java学习课件9.ppt

上传人:peixunshi 文档编号:14846180 上传时间:2022-02-21 格式:PPT 页数:52 大小:465.50KB
返回 下载 相关 举报
java学习课件9.ppt_第1页
第1页 / 共52页
java学习课件9.ppt_第2页
第2页 / 共52页
java学习课件9.ppt_第3页
第3页 / 共52页
java学习课件9.ppt_第4页
第4页 / 共52页
java学习课件9.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《java学习课件9.ppt》由会员分享,可在线阅读,更多相关《java学习课件9.ppt(52页珍藏版)》请在三一文库上搜索。

1、2022/2/21,1,第 9 章 小应用程序(Applet),山东理工大学计算机学院周雪芹二OO九年十一月,2022/2/21,2,本章总体纲要,9.1 源程序(P329)9.1.1小程序的生命周期(P329)9.1.2 图形用户界面(P333)9.1.3 获取系统信息(P338)9.2 小应用程序HTML标记符(P342)9.3 应用程序和小应用程序(P354),2022/2/21,3,Applet简 介,Applet能够嵌入在WEB页中运行使WEB页具有人机交互能力使WEB页具有动态特性Applet是Java早期推出的网络运行方案, 是Java崛起的法宝, 对于Java的发展和壮大具有不

2、可磨灭的功绩。,2022/2/21,4,什么是小应用程序?,嵌入到WEB页运行的Java程序必须嵌入到HTML文件中,不能独立运行java.applet.Applet 或javax.swing.JApplet的子类由浏览器解释执行通过appletviewer或HTML 浏览器运行,2022/2/21,5,Applet举例,import java.awt.*;import java.applet.Applet;public class MoonApplet extends Applet public void paint(Graphics g) g.setColor(Color.red); g.

3、drawString(The Moon,100,20); int x=0,y=0; x=this.getWidth()/4; y=this.getHeight()/4; int diameter=Math.min(this.getWidth()/2,this.getHeight()/2); g.setColor(Color.yellow); g.fillOval(x,y,diameter,diameter); g.setColor(this.getBackground(); g.fillOval(x-20,y-20,diameter,diameter); ,小应用程序练习,2022/2/21,

4、6,本章总体纲要,9.1 源程序(P329)9.1.1小程序的生命周期(P329)9.1.2 图形用户界面(P333)9.1.3 获取系统信息(P338)9.2 小应用程序HTML标记符(P342)9.3 应用程序和小应用程序(P354),2022/2/21,7,Applet应用程序的运行原理,运行原理(由客户端浏览器解释执行):嵌入Applet的WEB页存储在WEB服务器上用户通过浏览器请求WEB页服务器将网页的超文本文档下载到客户机超文本由浏览器解释执行,嵌入在超文本中的Applet由浏览器中的JAVA解释器解释执行。Microsoft和NetScape浏览器均支持Java安装操作系统时,

5、自动安装了Java虚拟机,浏览器中也包含Java解释器HTML语言含支持Applet的标记及相关属性,2022/2/21,8,小应用程序的生命周期,初始化状态(瞬时),运行状态,停止状态,死亡状态,start(),复原 或 重新进入该网页,start(),stop(),关闭浏览器,destroy(),第一次加载(打开),构建init()创建Applet对象,对其中包含的组件初始化,图标化 或 关闭浏览器,与浏览器息息相关,何时运行、何时结束由浏览器控制,浏览器显示Applet时,只要显示窗口大小发生改变,皆运行paint()方法,2022/2/21,9,小应用程序的生命周期,ublic voi

6、d init( ): 被调用一次,在第一次加载小应用程序时public void start( ): 当小应用程序在启动或重新启动时,会调用此方法public void paint( ):刷新小应用程序的图形界面时启动public void stop( ): 当小应用程序被图标化或关闭浏览器时,会调用此方法public void destroy( ):被调用一次,在(关闭网页之前)卸载小应用程序时,2022/2/21,10,验证小应用程序生命周期的例程,import java.awt.Graphics;import javax.swing.JApplet;import java.awt.Col

7、or;public class J_AppletLife extends JApplet public void init() System.out.println(init()初始化); public void start() System.out.println(start()启动); public void paint(Graphics g) g.clearRect(0,0,getWidth(),getHeight(); /g.setColor(Color.red); g.drawString(验证小应用程序的生命周期,20,40); System.out.println(paint()

8、绘制); ,ublic void stop() System.out.println(stop()停止); public void destroy() System.out.println(destroy()销毁); ,小应用程序练习 ,2022/2/21,11,编译与执行,编译:D:myjava javac -d classes src/J_AppletLife.java执行:D:myjava appletviewer 00.htmlinit()初始化start()启动paint()绘制paint()绘制paint()绘制paint()绘制paint()绘制paint()绘制stop()停止

9、destroy()销毁,2022/2/21,12,本章总体纲要,9.1 源程序(P329)9.1.1小程序的生命周期(P329)9.1.2 图形用户界面(P333)9.1.3 获取系统信息(P338)9.2 小应用程序HTML标记符(P342)9.3 应用程序和小应用程序(P354),2022/2/21,13,类的层次结构,java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.Panel | +-java.applet.Applet | +-javax.swing.JApplet,2022/2/2

10、1,14,JApplet与Applet的不同点,关系: 子类与父类容纳的组件Applet类容纳AWT组件JApplet类容纳AWT组件和Swing组件默认的布局方式不同JApplet BorderLayoutApplet FlowLayout添加组件的方式:Applet: applet.add(child);Japplet: 可以通过contentPane()方法加组件: theJapplet.getContentPane( ).add(child);,2022/2/21,15,编写图形用户界面程序,编写图形用户界面程序就是继承Applet或JApplet类的子类,重写其init()、star

11、t()、paint(Graphics g)、stop()、destroy()方法。,2022/2/21,16,图形用户界面例程(用JApplet实现),/根目录D:myjava/文件夹及文件名:srcJ_MyJApplet.javaimport java.awt.*;import javax.swing.*;import java.awt.event.*;public class J_myJApplet extends JApplet implements ActionListener private JTextField tf=new JTextField(); public void in

12、it() Container c=getContentPane(); JButton b; String s=East,South,West,North; for(int i=0;i4;i+) b=new JButton( +i); c.add(b,si); b.addActionListener(this); c.add(tf,Center); ,ublic void actionPerformed(ActionEvent e) String s=tf.getText()+e.getActionCommand(); tf.setText(s); /根目录D:myjava/文件夹及文件名:ht

13、mltest.html小应用程序练习编译与执行:D:myjava javac -d classes src/J_myJApplet.javaD:myjava appletviewer html/test.html,2022/2/21,17,图形用户界面例程(用JApplet实现),import java.awt.*;import javax.swing.*;import java.awt.event.*;public class J_myJApplet extends JApplet implements ActionListener private JTextField tf=new JTe

14、xtField(); public void init() JButton b; String s=East,South,West,North; for(int i=0;i4;i+) b=new JButton( +i); this.add(b,si); b.addActionListener(this); this.add(tf,Center); public void actionPerformed(ActionEvent e) String s=tf.getText()+e.getActionCommand(); tf.setText(s); ,/根目录D:myjava/文件夹及文件名:

15、htmltest.html小应用程序练习 编译与执行:D:myjava javac -d classes src/J_myJApplet.javaD:myjava appletviewer html/test.html,2022/2/21,18,图形用户界面例程(用Applet实现),/根目录D:myjava 文件夹及文件名:srcJ_MyJApplet.javaimport java.awt.*;import javax.swing.*;import java.awt.event.*;import java.applet.Applet;public class J_myJApplet ext

16、ends Applet implements ActionListener private JTextField tf=new JTextField(); public void init() this.setLayout(new BorderLayout(); JButton b; String s=East,South,West,North; for(int i=0;i4;i+) b=new JButton( +i); this.add(b,si); b.addActionListener(this); this.add(tf,Center); ,ublic void actionPerf

17、ormed(ActionEvent e) String s=tf.getText()+e.getActionCommand(); tf.setText(s); /根目录D:myjava/文件夹及文件名:htmltest.html小应用程序练习编译与执行:D:myjava javac -d classes src/J_myJApplet.javaD:myjava appletviewer html/test.html,2022/2/21,19,本章总体纲要,9.1 源程序(P329)9.1.1 小程序的生命周期(P329)9.1.2 图形用户界面(P333)9.1.3 获取系统信息(P338)9

18、.2 小应用程序HTML标记符(P342)9.3 应用程序和小应用程序(P354),2022/2/21,20,小应用程序的安全性小应用程序可以做什么?,在网页上画图创建新的窗口,并画该窗口播放声音接收键盘或鼠标的输入(举例见下页)进行网络连接,2022/2/21,21,程序示例,import java.awt.*;import javax.swing.*;import java.applet.Applet;import java.awt.event.*;public class loginJApplet extends JApplet implements ActionListener pri

19、vate JTextField text_user; private JPasswordField password; private JComboBox combobox_mailbox; private JButton button_login; public void init() this.setBackground(Color.white); this.setLayout(new FlowLayout(FlowLayout.LEFT); text_user=new JTextField(10); this.add(text_user); this.add(new JLabel();

20、Object obj=,; combobox_mailbox=new JComboBox(obj); this.add(combobox_mailbox); button_login=new JButton(登录); button_login.addActionListener(this); this.add(button_login); ,小应用程序练习 faasdjkrjwkewqjr qkewrj qewrk,ublic void actionPerformed(ActionEvent e) if(text_user.getText().equals(abc) JOptionPane.s

21、howMessageDialog(this,登录成功); else JOptionPane.showMessageDialog(this, 登录不成功); ,2022/2/21,22,小应用程序的安全性 不可以做什么?,在主机的硬盘上读、写数据、删除文件直接调用本机的API读/写内存中未经许可的数据通过网络连接到未经授权的主机,2022/2/21,23,获取系统信息举例,应用程序和小应用程序都可以获得当前工作环境的系统属性信息,但前者比后者获得的信息多一些。P338页表9.1为小应用程序可以获得的系统属性,表9.2为小应用程序不能获得的系统属性。,2022/2/21,24,JApplet获取系

22、统信息举例,import java.awt.*;import javax.swing.*;public class J_getSysInfoApplet extends JApplet public void paint(Graphics g) String s= file.separator,java.class.version,java.specification.name,java.specification.vendor,java.specification.version,java.vendor,java.vendor.url,java.version,java.vm.name,ja

23、va.vm.specification.name,java.vm.specification.vendor,java.vm.specification.version,java.vm.vendor,java.vm.version,line.separator,os.arch,os.name,os.version,path.separator,java.class.path,piler,java.ext.dirs,java.home,java.io.tmpdir,java.library.path,user.dir,user.home,user.name; String r; g.clearRe

24、ct(0,0,getWidth(),getHeight(); for(int i=0;is.length;i+) try r=System.getProperty(si); catch(Exception e) r=出现异常:+e; g.drawString(si+:+r, 20,i*15+20); ,小应用程序练习,2022/2/21,25,执 行,2022/2/21,26,Application程序获取系统信息,import java.awt.*;import javax.swing.*;public class J_getSysInfo public static void main(S

25、tring args) String s=file.separator, java.class.version, java.specification.name, java.specification.vendor, java.specification.version, java.vendor, java.vendor.url, java.version, java.vm.name, java.vm.specification.name, java.vm.specification.vendor, java.vm.specification.version, java.vm.vendor,

26、java.vm.version, line.separator, os.arch, os.name, os.version, path.separator, java.class.path, piler, java.ext.dirs, java.home, java.io.tmpdir, java.library.path, user.dir, user.home, user.name; String r; for(int i=0;is.length;i+) try r=System.getProperty(si); catch(Exception e) r=出现异常:+e; System.o

27、ut.println(si+:+r); ,2022/2/21,27,运行结果,D:myjava javac -d classes src/J_getSysInfo.javaD:myjava java -cp classes J_getSysInfofile.separator:java.class.version:50.0java.specification.name:Java Platform API Specificationjava.specification.vendor:Sun Microsystems Inc.java.specification.version:1.6java.v

28、endor:Sun Microsystems Inc.java.vendor.url:http:/ HotSpot(TM) Client VMjava.vm.specification.name:Java Virtual Machine Specificationjava.vm.specification.vendor:Sun Microsystems Inc.java.vm.specification.version:1.0java.vm.vendor:Sun Microsystems Inc.java.vm.version:11.0-b15line.separator:os.arch:x8

29、6os.name:Windows XPos.version:5.1path.separator:;java.class.path:piler:nulljava.ext.dirs:C:Program FilesJavajre6libext;C:WINDOWSSunJavalibextjava.home:C:Program FilesJavajre6,java.io.tmpdir:C:DOCUME1ibmszLOCALS1Tempjava.library.path: C:WINDOWSsystem32;.; C:WINDOWSSunJavabin; C:WINDOWSsystem32; C:WIN

30、DOWS; C:WINDOWSsystem32;C:WINDOWS; C:WINDOWSSystem32Wbem; C:Program FilesThinkPadConnectUtilities; C:Program FilesIntelWiFibin; C:Program FilesCommon FilesLenovo; C:Program FilesLenovoClient Security Solution; C:Program FilesMicrosoft SQL Server80ToolsBinn; C:Program FilesMicrosoft SQL Server90DTSBi

31、nn; C:Program FilesMicrosoft SQL Server90Toolsbinn; C:Program FilesMicrosoft SQL Server90ToolsBinnVSShellCommon7IDE; C:Program FilesMicrosoft Visual Studio 8Common7IDEPrivateAssemblies; C:Program FilesCommon FilesTTKNBin;C:Program FilesJavajdk1.6.0_10bin; C:Program FilesMicrosoft Visual StudioCommon

32、ToolsWinNT; C:Program FilesMicrosoft Visual StudioCommonMSDev98Bin; C:Program FilesMicrosoft Visual StudioCommonTools;C:Program FilesMicrosoft Visual StudioVC98bin; C:Program FilesIDM Computer SolutionsUltraEdituser.dir:D:myjavauser.home:C:Documents and Settingsibmszuser.name:ibmsz,2022/2/21,28,本章总体

33、纲要,9.1 源程序(P329)9.2 小应用程序HTML标记符(P342)9.3 应用程序和小应用程序(P354),2022/2/21,29,小应用程序HTML标记符,标记符 ,默认200像素,默认200像素,2022/2/21,30,标记符Code 和 Codebase,CODE指定小应用程序所对应的“.class”文件CODEBASE指定 “.class”所在的位置/路径(相对路径)示例 1: 示例 2: ,2022/2/21,31,JAR压缩文档和标记符ARCHIVE,将小应用程序所需要的所有图像、声音以及“.class”文件压缩成一个JAR压缩文档,可以减少加载小应用程序的时间不使用

34、ARCHIVE属性:每个文件 加载 需要独立的 HTTP 连接许多文件 许多次连接使用ARCHIVE属性:许多文件组成一个文件 一次连接数据被压缩 减少数据本身的传输时间,2022/2/21,32,示例: (ARCHIVE),javac *.javajar -cvf all.jar *.class, An applet Example ,命令,AppletExample.html,2022/2/21,33,给小应用程序传递参数,给小应用程序传递参数,在HTML文件中给小应用程序传递参数,在程序代码中public String getParameter(String name) 类java.ap

35、plet.Applet的成员方法,2022/2/21,34,练 习codebase、vspace、hspace、align属性的使用,1、在浏览器下运行小应用程序练习faasdjkrjwkewqjr qkewrj qewrk用appletviewer查看器可能会出错,1、找不到绝对路径下的class文件。2、必须指定applet的高度和宽度适合用IE浏览器来运行HTML文件,2022/2/21,35,练习 2、Param属性的使用,小应用程序练习 faasdjkrjwkewqjr qadfdsafsadffa j qewrk,import java.awt.*;import javax.swi

36、ng.*;import java.applet.Applet;import java.awt.event.*;public class ParaJApplet extends JApplet private String text; private int size,color; public void init() this.setBackground(Color.blue); this.text=this.getParameter(text); this.size=Integer.parseInt(this.getParameter(size); this.color=Integer.pa

37、rseInt(this.getParameter(color),16); public void paint(Graphics g) g.setColor(new Color(this.color); g.setFont(new Font(,1,this.size); g.drawString( this.getParameter(text),10,50); ,2022/2/21,36,说 明,在HTML文档执行期间,它与.class文件始终保持连接上例中改变HTML中 标签内参数的值,刷新网页,网页更新java源文件更改、编译,.class文件改变,只有重新运行网页文件,所做的更改能够执行;

38、刷新网页不能反映.class文件的改变,即使字节码文件移动位置,刷新HTML网页,仍能正常显示。,2022/2/21,37,示例: J_Applet.java,import java.awt.*;import javax.swing.*;public class J_Applet extends JApplet public void paint(Graphics g) String s= getParameter(TestPara); g.drawString(Value of TestPara is + s + ., 10, 50); / 方法paint结束 /类J_Applet结束, A

39、n applet Example ,Value of TestPara is TestValue.,J_Applet.java,AppletExample.html,程序输出,2022/2/21,38,本章总体纲要,9.1 源程序(P329)9.2 小应用程序HTML标记符(P342)9.3 应用程序和小应用程序(P354),2022/2/21,39,既是应用程序,又是小应用程序,可以编写一个程序,它既是应用程序,又是小应用程序。单个“.class”文件既可以按应用程序执行,又可以按小应用程序执行,2022/2/21,40,/ 同时是应用程序与小应用程序的图像显示例程import java.a

40、wt.BorderLayout;import java.awt.Container;import java.awt.Image;import java.io.File;import javax.imageio.ImageIO;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JApplet;import javax.swi

41、ng.JFrame;import javax.swing.JLabel;import javax.swing.JList;public class J_List extends JApplet private String m_items = snow.gif, flag.gif , rain.gif; private JList m_list = new JList(m_items); private JLabel m_label = new JLabel( ); private Icon m_icons = new ImageIcon3; private Image m_image = n

42、ull; Container m_container = null;,示例: J_List.java,2022/2/21,41,ublic void init( ) int i; if (m_image = null) m_image = new Image3; for (i=0; i 3; i+) m_imagei = getImage(getCodeBase( ), m_itemsi); / if结构结束 for (i=0; i 3; i+) m_iconsi = new ImageIcon(m_imagei); if (m_container = null) m_container =

43、getContentPane( ); m_container.setLayout(new BorderLayout( ); m_container.add(m_list, BorderLayout.WEST); m_list.setSelectedIndex(0); m_list.addListSelectionListener(new ListSelectionListener( ) public void valueChanged(ListSelectionEvent e) int s = m_list.getAnchorSelectionIndex( ); m_label.setIcon

44、(m_iconss); / 方法valueChanged结束 / 实现接口ListSelectionListener的内部类结束 ); / addListSelectionListener方法调用结束 m_container.add(m_label, BorderLayout.EAST); m_label.setIcon(m_icons0); / 方法init结束,示例: J_List.java,2022/2/21,42,示例: J_List.java,ublic static void main(String args ) JFrame f = new JFrame(应用程序); J_Lis

45、t app = new J_List( ); app.m_container= f.getContentPane( ); app.m_image = new Image3; try for (int i=0; i 3; i+) app.m_imagei = ImageIO.read( new File(app.m_itemsi) ); catch (Exception e) System.err.println(发生异常: + e); e.printStackTrace( ); / try-catch结构结束 app.init( ); f.setSize(250, 110); f.setVis

46、ible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 方法main结束 / 类J_List结束,2022/2/21,43,示例: AppletExample.html, 小应用程序例程图像显示 ,2022/2/21,44,编译, 运行 & 输出,运行需要snow.gif、flag.gif和rain.gif,应用程序,小应用程序,2022/2/21,45,本章小结,小应用程序小应用程序HTML标记符同时是应用程序和小应用程序,2022/2/21,46,作业,习题9.6,2022/2/21,47,Applet支持的多媒体技术

47、,绘制图形显示图像播放音频播放动画利用线程机制控制图形的重复绘制和图像和连续显示,2022/2/21,48,Applet获得资源的方法,ublic URL getCodeBase() 获得URL。public URL getDocumentBase() 获取嵌入此 applet 的HTML文档的 URL。,2022/2/21,49,Applet显示图像,得到图像public Image getImage(URLurl) 返回能被绘制到屏幕上的 Image 对象。public Image getImage(URLurl, Stringname) 返回能被绘制到屏幕上的 Image 对象。显示图像

48、(与图形的绘制类似)java.awt.Graphics类提供方法:,2022/2/21,50,显示图像程序示例,预备工作:在.class所在目录下建立文件夹images,下有一图像文件P580.jpg小应用程序练习faasdjkrjwkewqjr qadfdsafsadffa j qewrkimport java.awt.*;import javax.swing.*;public class multimediaJApplet extends JApplet Image image1; public void init() image1=this.getImage(this.getCodeBa

49、se(),images/P580.jpg); public void paint(Graphics g) g.drawImage(image1,20,20,400,300,this); ,2022/2/21,51,Applet显示音频文件,得到音频对象public AudioClip getAudioClip(URLurl) 返回URL参数指定的AudioClip对象public AudioClip getAudioClip(URLurl, Stringname) 返回URL和name参数指定的AudioClip对象java.applet.AudioClip接口提供对音频对象的控制public

50、 void loop() 以循环方式开始播放此音频剪辑public void play() 开始播放此音频剪辑public void stop() 停止播放此音频剪辑,2022/2/21,52,显示图像、播放音频程序示例,import java.awt.*;import javax.swing.*;import java.applet.*;public class multimediaJApplet extends JApplet Image image1; AudioClip ac1; public void init() image1=this.getImage(this.getCodeB

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

当前位置:首页 > 社会民生


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