Applet设计.doc_第1页
Applet设计.doc_第2页
Applet设计.doc_第3页
Applet设计.doc_第4页
Applet设计.doc_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

第一节 Appliction和Applet一、Application应用程序Java应用程序(Application)是指采用Java语言编制的独立执行的程序,应有main()函数。例如:import java.io.*; /引用所需要的包public class HelloWorldApp /定义出自己的应用程序类/注意main()的定义格式要求并与C/C+的差别public static void main(String args) System.out.println(“Hello World !”);二、Applet小程序Java Applet则是内嵌到HTML文档中并由浏览器来解释执行的,无须定义出main()函数,也不能独立地执行。例如:import java.awt.Graphics;import java.applet.Applet; /引用所需要的包public class HelloWorldApp extends Applet/注意:无须定义出main()函数 public String Str;public void init()/在init()中实现Applet程序的初始化 Str =new String(“Hello World !”);public void paint(Graphics g) / 在paint()中实现Applet程序的示输出 g.drawString(Str,25,25); 三、两种程序的编程格式要求: Application格式:注意 main()函数的定义格式。 Java Applet源程序的格式:编写一个Applet程序其实就是建立java.applet包中的Applet类的一个子类。因而其类的定义的一般形式如下:import java.applet.Applet; /必须引人java.applet包public class MyApplet extends Applet ./成员函数的定义四、编译执行Applet程序的方法:先编译Java的源程序,再设计一个HTML文档文件,然后采用标签来内嵌Java Applet程序;在浏览器中打开(本地或远程http方式)此HTML文档,即可执行此Applet程序。要点:如果在IE浏览器中执行出现错误,最好改用JDK中自带的appletviewer.exe来执行C: appletviewer MyHTML.html样例一:import java.applet.Applet;import java.awt.*;public class AppletHello extends Applet public void paint(Graphics g)g.drawString(您好,Java小程序。,28,28); Applet程序演示 Applet的运行效果如右边所示:采用JDK自带的appletviewer命令执行。C: appletviewer HelloApplet.html样例二(绘图的例子)import java.applet.Applet;import java.awt.*;public class AppletHello2 extends Applet public void paint(Graphics g) g.draw3DRect(8,8,30,38,true);样例三:import java.applet.Applet;import java.awt.*;public class AppletHello3 extends Appletpublic void paint(Graphics g) g.drawOval(30,30,50,38);第二节 Applet程序的编程一、编程规范1)作用:形成动态可交换式的网页,并可利用浏览器中所提供的图形功能显示及处理图像、处理用户界面、网络通讯、用户事件处理、访问后台数据库等功能。 2)Applet的类层次及安全性规则1任何一个Applet程序都必须继承于Applet类(在Java.applet包中)。2而Applet类又是java.awt.Panel类的子类,因而具有Component类的能力,同时它又是一个Container类的子类,可以直接包含其他组件并加以布局。3可利用Sun公司的Java JDK中的AWT来设计Applet的GUI图形用户界面及事件处理。要点FJava Applet的安全性规则:在运行时不能调用其他的程序;不能对客户机本地磁盘中的文件读写;不能试图与其他服务器进行Socket连接及装载动态连接库和调用本地方法。3)Applet类中的5个成员函数Applet程序的加载、执行、卸载不同于一般的Java应用程序,其内的5个成员函数分别对应于Applet程序的生命周期的不同阶段的活动,一般应在自己的Applet中重定义出它们以实现自己的特定的行为。Applet();init();start();stop();destroy();第一次装入构造Applet初始化状态启动状态停止状态消毁状态1初始状态(对应init( ) 初始化函数):它在Applet程序第一次被执行或重新再被执行时被调用。 执行时机:当Applet程序初始下载时浏览器首先执行它 特点:只被调用一次。 用途:用户重定义出它,从而达到创建出其他对象、初始状态设置、图像加载及外观特征参数的改变等。2启动状态 start()开始函数: 执行时机:它是在Applet的init()函数调用之后被浏览器调用;用户又切换回到本Applet页面;浏览器从图标状态恢复为窗口时被调用。 特点:可能被多次执行(而且都是在页面可见时被调用)。 用途:用户重定义出它,在其内创建并启动线程以实现特定的功能。3终止状态 stop() 终止函数:它与start()交替执行。 执行时机:当用户退出浏览器时被浏览器调用;当用户离开Applet所在的页面;浏览器变为图标状态时。 特点:可能被多次执行(而且都是在页面不可见时被调用)。 用途:用户重定义出它,在其内终止线程以终止特定的功能。4消毁状态 destroy()消毁函数:它在Applet结束时被调用,以允许Applet做最后清理任务。用途:由于stop()在destroy()之前被执行,用户一般不必覆盖它,而只需覆盖stop()即可。5绘制状态paint() 绘制显示函数:它用于在浏览器的客户区(GUI)中显示出文本、图像等。 特点:可多次被调用,并且可由AWT的绘制处理线程自动调用。 用途:用户重定义出它,以显示出Applet面板区域内各个组件及外观特征和显示出文本、图像、图形等。 定义的形式: public void paint(Graphics g) /显示出Applet面板区域内各组件外观二、Java Applet程序的编程格式一般的格式如下import java.applet.*; /引用所需要的包public class MyApplet extends Applet/从Applet基类来继承 /在自己的Applet派生类中重写出4个主要的方法public void init() /在init()中主要可以实现程序的各种初始化功能;public void start()/在start()中主要是启动程序的各种功能如创建出线程等。public void stop()/在stop ()中主要是终止程序的各种功能如终止线程等。public void paint(Graphics g) /实现Applet程序的各种文字、图形、图像等的输出 / 其他用户自己所定义的功能函数三、获取HTML页面的参数为了获取HTML页面提供的参数,在HTML页面上可以写: 而Applet中可以写:/取得变量的方法/如果key外部变量存在,则输出它,否则输出自定义的defpublic String getParameter(String key, String def) return (getParameter(key) != null ? getParameter(key) : def);/获取外部变量,因为输入信息的不确定,所以进行异常处理try var0 = this.getParameter(param0, );catch(Exception e)样例:import java.awt.*;import java.applet.*;import javax.swing.*;public class AppletDemo extends Applet /分别声明获取两个外部变量的字符字量 String var0; String var1; JLabel jLabel1 = new JLabel(); /声明标签 JButton jButton1 = new JButton(); /声明按钮1 JButton jButton2 = new JButton(); /声明按钮2 /取得变量的方法 public String getParameter(String key, String def) return (getParameter(key) != null ? getParameter(key) : def); /applet的构造器 public AppletDemo() /初始化Applet public void init() /分别获取两个外部变量,因为输入信息的不确定,所以进行异常处理 try var0 = this.getParameter(param0, );catch(Exception e) try var1 = this.getParameter(param1, );catch(Exception e) /引用控件初始化方法 try jbInit();catch(Exception e) /控件初始化方法 private void jbInit() throws Exception /设置Applet面板的布局 this.setLayout(null); /设置标签的标题,位置与大小 jLabel1.setText(Applet程序演示); jLabel1.setBounds(new Rectangle(147, 48, 107, 20); jButton1.setText(var0); /使用外部变量1设置按钮的标题 jButton1.setBounds(new Rectangle(98, 109, 192, 23); jButton2.setText(var1); /使用外部变量2设置按钮的标题 jButton2.setBounds(new Rectangle(99, 165, 191, 25); /向Applet容器加入各种容器 this.add(jButton2, null); this.add(jButton1, null); this.add(jLabel1, null); 下面是HTML代码:HTML Test PageAppletDemo will appear below in a Java enabled browser.四、加载网络文件的Applet加载网络文件使用java.applet类包中的 AppletContext 接口,方法为 showDocument(),创建方法如下所示:1)showDocument(URL url)。2)showDocument(URL url,String target)。 参数解释如下: 1)URL :网络地址,如:“”。 2)target:显示窗口或框架的位置,有如下的选择:Self:原来的窗口;blank:新的无名字窗口; “Window Name” :名字为“Window Name”的新窗口;parent:窗口的父框架,如果不存在框架,则在新窗口显示;top:窗口的上面框架,如果不存在框架,则在新窗口显示。样例:import java.applet.*;import java.awt.*;import java.awt.event.*;import .URL;public class DocumentDemo extends Applet implements ActionListener URLWindow urlWindow;public void init() Button button = new Button(URL地址的输入窗口);/加入动作接收器button.addActionListener(this);add(button);/创建URL地址输入窗口,并保存在内存urlWindow = new URLWindow(getAppletContext();/当退出浏览器时清空Frame窗口所占用的内存public void destroy() urlWindow.setVisible(false);urlWindow = null;/URL地址的输入窗口按钮的单击事件public void actionPerformed(ActionEvent event) urlWindow.setVisible(true); /显示窗口/URL地址输入窗口的创建代码class URLWindow extends Frame implements ActionListener TextField urlField;Choice choice; /创建AppletContext接口,该接口主要用于显示网络文件AppletContext appletContext;public URLWindow(AppletContext appletContext) super(输入URL地址的窗口);/设置窗口的标题setSize(new Dimension(420,120); /设置窗口的大小/将Applet的appletContext属性赋给appletContext变量this.appletContext = appletContext;Label label1 = new Label(请输入URL的地址:);Label label2 = new Label(请选择窗口模式);urlField = new TextField(/, 40);urlField.addActionListener(this);choice = new Choice();/加入下拉列表框的数据choice.addItem(新窗口); /在名为新窗口的IE窗口内显示文件choice.addItem(_blank); /在无名字的IE窗口内显示文件choice.addItem(_self); /在原来的窗口显示文件/在父框架内显示文件,如果不存在父框架,那么在/原来的窗口显示文件choice.addItem(_parent); /在框架的上面显示文件,如果不存在框架,那么在/原来的窗口显示文件choice.addItem(_top); Button button = new Button(显示网络文件);button.addActionListener(this);/创建空布局,并设置各个控件的位置与大小setLayout(null);label1.setBounds(new Rectangle(20, 19, 105, 24);label2.setBounds(new Rectangle(20, 61, 122, 25);urlField.setBounds(new Rectangle(134, 19, 259, 26);choice.setBounds(new Rectangle(135, 64, 135, 24);button.setBounds(new Rectangle(277, 63, 117, 26);/向窗口内加入各个控件add(label1);add(label2);add(urlField);add(choice);add(button);/当窗口关闭时隐藏该窗口addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent event) setVisible(false); );public void actionPerformed(ActionEvent event) String urlString = urlField.getText(); URL url = null; /根据输入框的字符创建网络地址try url = new URL(urlString); catch (Exception e) if (url != null) /网络地址不为空的时候 if (choice.getSelectedIndex() = 0) /下拉列表框的第一项被选的时候 appletContext.showDocument(url); /在新的窗口显示网络文件 else /使用框架参数显示网络文件 appletContext.showDocument(url,choice.getSelectedItem(); HTML Test PageDocumentDemo will appear below in a Java enabled browser.通过加载网络文件,事实上提供了一个Applet和宿主站点交换数据的通道。第三节 Applet的事件和实例在java语言中,事件的接收由事件接收器控制,在上一章节中,我们讨论了在Frame中使用事件的方法,在Applet中,可以用相似的方式编程,但它也有自己的特点。一、绘图事件import java.awt.*;import java.applet.*;public class PaintDemo extends Applet public void init() repaint();/使用该命激活paintComponet方法public void paint (Graphics g) /画线g.drawLine(10, 50, 50,10);g.drawString(画线, 10, 65);/画矩形g.drawRect(60, 10, 100, 40); g.drawString(画矩形, 60, 65);import java.awt.*;import java.applet.*;public class PaintDemo extends Applet public void init() repaint();/使用该命激活paintComponet方法public void paintComponent(Graphics g) /画线g.drawLine(10, 50, 50,10);g.drawString(画线, 10, 65);/画矩形 g.drawRect(60, 10, 100, 40); g.drawString(画矩形, 60, 65); 二、鼠标事件import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;public class MouseEventDemo extends Applet JTextArea displayArea = new JTextArea();/创建文本框JScrollPane dascrollpane = new JScrollPane(); /创建滚动框/Applet初始化事件 public void init() try jbInit();catch(Exception e) private void jbInit() throws Exception /设置滚动框的位置 dascrollpane.setBounds(new Rectangle(33, 187, 336, 91);/向滚动框里面加入文本框dascrollpane.getViewport().add(displayArea); /加入鼠标运动接收器this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter()/按着鼠标键的拖动事件public void mouseDragged(MouseEvent e) this_mouseDragged(e);/鼠标移动事件public void mouseMoved(MouseEvent e) this_mouseMoved(e); ); /加入鼠标接收器 this.addMouseListener(new java.awt.event.MouseAdapter() /鼠标单击事件 public void mouseClicked(MouseEvent e) this_mouseClicked(e); /鼠标进入事件 public void mouseEntered(MouseEvent e) this_mouseEntered(e); /鼠标离开事件 public void mouseExited(MouseEvent e) this_mouseExited(e); ); this.setLayout(null); /设置Applet的布局 this.add(dascrollpane, null); /向Applet加入滚动框 void this_mouseClicked(MouseEvent e) displayArea.append(鼠标单击事件,坐标为(+e.getX()+,+e.getY()+)n);void this_mouseDragged(MouseEvent e) displayArea.append(鼠标按着键移动事件,坐标为(+e.getX()+,+ e.getY()+)n);void this_mouseEntered(MouseEvent e) displayArea.append(鼠标进入事件,坐标为(+e.getX()+,+e.getY()+)n);void this_mouseExited(MouseEvent e) displayArea.append(鼠标离开事件,坐标为(+e.getX()+,+e.getY()+)n);void this_mouseMoved(MouseEvent e) displayArea.append(鼠标移动事件,坐标为(+e.getX()+,+e.getY()+)n); Applet程序演示 Applet的运行效果如下边所示:实际上,现代的Applet使用Swing下的JApplet,使用的例子如下:import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;public class Applet1 extends JApplet private boolean isStandalone = false; JPanel jPanel1 = new JPanel(); JButton jButton1 = new JButton(); JPanel jPanel2 = new JPanel(); /Get a parameter value public String getParameter(String key, String def) return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); /Construct the applet public Applet1() /Initialize the applet public void init() try jbInit(); catch(Exception e) e.printStackTrace(); String var0=0; String var1=0; /Component initialization private void jbInit() throws Exception /分别获取两个外部变量,因为输入信息的不确定,所以进行异常处理 var0 = this.getParameter(param0,0); var1 = this.getParameter(param1,0); this.setSize(new Dimension(298, 210); jPanel1.setLayout(null); jButton1.setBounds(new Rectangle(190, 5, 100, 22); jButton1.setText(显示); jButton1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) jButton1_actionPerformed(e);); jPanel2.setBackground(Color.white); jPanel2.setBounds(new Rectangle(5, 35, 290, 150); this.getContentPane().add(jPanel1, BorderLayout.CENTER); jPanel1.add(jButton1, null); jPanel1.add(jPanel2, null); /Start the applet public void start() /Stop the applet public void stop() /Destroy the applet public void destroy() /Get Applet information public String getAppletInfo() return Applet Information; /Get parameter info public String getParameterInfo() return null; void jButton1_actionPerformed(ActionEvent e) int x=Integer.parseInt(var0); int y=Integer.parseInt(var1); Graphics g=jPanel2.getGraphics(); g.setColor(Color.black); g.draw3DRect(x,y,30,38,true);页面: Applet程序演示 Applet的运行效果如下边所示:事实上,一般不太倾向于Applet直接连接服务器端的数据库,但是可以利用网页连接数据库,再把数据传到Applet里面去。而且,使用Applet的网页可以很复杂,不但jsp,甚至简单的ASP也可以使用Applet,并且可以往里面传入动态数据,并且画图,下面就是这样一个例子。import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;public class Applet1 extends JApplet private boolean isStandalone = false; JPanel jPanel1 = new JPanel(); JButton jButton1 = new JButton(); JPanel jPanel2 = new JPanel(); /Get a parameter value public String getParameter(String key, String def) return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); /Construct the applet public Applet1() /Initialize the applet public void init() try jbInit(); catch(Exception e) e.printStackTrace(); int varX; int varY; int varSize; /Component initialization private void jbInit() throws Exception /分别获取两个外部变量 varSize =Integer.parseInt(this.getParameter(paramsize,0); varX=new intvarSize; varY=new intvarSize; for (int i=0;ivarSize;i+) varXi = Integer.parseInt(this.getParameter(paramx+String.valueOf(i),0); for (int i=0;ivarSize;i+) varYi = Integer.parseInt(this.getParameter(paramy+String.valueOf(i),0); this.setSize(new Dimension(298, 210); jPanel1.setLayout(null); jButton1.setBounds(new Rectangle(190, 5, 100, 22); jButton1.setText(显示); jButton1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) jButton1_actionPerformed(e); ); jPanel2.setBackground(Color.white); jPanel2.setBounds(new Rectangle(5, 35, 290, 150); this.getContentPane().add(jPanel1, BorderLayout.CENTER); jPanel1.add(jButton1, null); jPanel1.add(jPanel2, null); /Start the applet public void start() /Stop the applet public void stop() /Destroy the applet public void destroy() /Get Applet information public String getAppletInfo() return Applet Information; /Get parameter info public String getParameterInfo() return null; public void jButton1_actionPerformed(ActionEvent e) Graphics g=jPanel2.getGraphics(); g.setColor(Color.blue); int x11=varX0; int y11=varY0; for (int i=1;ivarSize;i+) g.drawLine(x11,y11,varXi,varYi); x11=varXi; y11=varYi; 页面:为了简单,这里的数据来自于数组,当然也可以来自于数据库。Applet1.asp Applet程序演示 Applet的运行效果如下边所示:param name = value = param name = value = 利用鼠标事件,可以做出互动性非常好的程序来,请仔细研究这个程序,看看处理问题的方法到底是怎么样的。import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;public class Applet1 extends JApplet private boolean isStandalone = false; JPanel jPanel1 = new JPanel(); JB

温馨提示

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

评论

0/150

提交评论