java之gui applet生命周期详解!

举报
泽宇-Li 发表于 2021/05/26 15:01:39 2021/05/26
【摘要】 Applet简介:           一个Applet程序必须式java.applet.Applet的子类。          java.applet.Applet类定义了Applet的生命周期。          applet是嵌入在浏览器中运行的,不能单独运行。浏览器必须安装了Java运行时环境(JRE)。          ------------------------------...

Applet简介:
           一个Applet程序必须式java.applet.Applet的子类。
          java.applet.Applet类定义了Applet的生命周期。
          applet是嵌入在浏览器中运行的,不能单独运行。浏览器必须安装了Java运行时环境(JRE)。
          
------------------------------------------------------------------------------
applet生命周期:

初始化init():在这个方法中可以设置一些初始值,像是界面的布局,会在param标签被处理后调用这个方法。

启动start():    浏览器调用完init()方法后,该方法被自动调用。每当用户从其他页面返回到包含Applet的页面时,则调用该方法。

停止stop():当用户从包含applet的页面移除的时候,该方法自动被调用。因此,可以在相同的applet中反复调用该方法。

销毁destroy():此方法仅当浏览器正常关闭时调用。因为applets只有在HTML网页上有效,所以你不应该在用户离开包含Applet的页面后遗漏任何资源.

paint():该方法在start()方法之后立即被调用,或者在applet需要重绘在浏览器的时候调用。paint()方法实际上继承于java.awt。


-------------------------------------------------------------------------
第一个applet程序

(1)编写一个java.applet.Applet的子类。
import java.applet.Applet;
import java.awt.*;

public class FirstApplet extends Applet {
    
    public void init() {
        Label label = new Label("学习Applet");
        add(label);
        System.out.println("init");
    }
    
    public void start() {
        System.out.println("start");
    }
    
    public void stop() {
        System.out.println("stop");
    }
    
    public void destory() {
        System.out.println("destory");
    }
    
    public void paint(Graphics g) {
        g.drawString("okoko", 20, 30);
        System.out.println("paint");
    }
}
(2)编译源文件。

(3)建立html文件.
<applet code="FirstApplet.class" height=200 codebase="./"  width=200></applet>

字节码文件与html文件在一个目录下。

(4)运行
appletviewer runApplet.html

**注意,appletviewer后面接着的是html文件,不是java的class文件!

----------------------------------------------------------------------------------------------------
使用标签来给applet传值

在html文件中我们可以继续加入<param>标签来为applet传值。
<applet code="SecApplet.class" codebase="./" height=200 width=200>
     <param name="what" value="12"/>
</applet>

在应用程序代码中使用getParameter(参数名)获取参数。例如:
import java.applet.Applet;
import javax.swing.JLabel;
public class Hello extends Applet{
    public void init(){
        String age = getParameter("what");
        JLabel lable = new JLabel(age);
        add(lable);
    }
}

**可以传递多个参数。

5.applet的两种类

(1) java.applet.Applet以及javax.swing.Applet继承的类
----------------------------------------------------------------------------
Java.lang.Object
Java.awt.Component//组件
Java.awt.Container//容器
Java.awt.Panel//面板
Java.applet.Applet:默认的布局方式是FlowLayout
Javax.swing.JApplet:默认的布局方式是BorderLayout

(2)组件的添加
-----------------------------------------------------------------------------

直接添加:
---------------------------------------------
theApplet.add(Component awtComponent);
theJApplet.getContentPane().add(Component  swingComponent);   

对于JApplet的第一种添加构件形式
import javax.swing.JApplet;
import javax.swing.JButton;

public class Test2 extends JApplet{
    public void init(){
        JButton button = new JButton("点我");
        getContentPane().add(button);
        add(button);
    }
}

----------------------------------------------------------------------

间接添加:
---------------------------------------------------------
 建立一个JPanel之类的中间容器,把构件添加到容器中,再用setContentPane()方法把该容器置为JApplet的内容面板:
JPanel contentPane=new JPanel(); 
contentPane.add(SomeComponent);
 setContentPane(contentPanel);

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;

public class Test2 extends JApplet{
    public void init(){
        JButton button = new JButton("点我");
        JPanel panel = new JPanel();
        panel.add(button);
        setContentPane(panel);
        add(button);
    }
}

----------------------------------------------------------------------------------------------

applet去画文字和图形
---------------------------------------------------------------------------
Graphics类介绍
Graphics类是表示applet显示区域的抽象类,它是java.awt包的部分,用于在applet的显示区域上画图。
为了在applet窗口中绘制图形,可不需要创建Graphics的实例。JApplet的paint()方法给出Graphics对象,通过使用该对象,结果就会出现在浏览器中。
java的坐标系统规定在屏幕左上角为原点(0,0),正x值向右,正y值向下。所有的像素值均为整数。
Graphics类提供画许多图像的方法,文本,线,圆,多边形,图像等。
画applet
当屏幕需要更新以显示新的内容,由update()和paint()方法完成。
update():取Graphics类对象为参数。当applet区域需要重画时,windows系统开始画画过程。调用update()方法清除屏幕再调用paint()方法,屏幕然后由系统更新。
paint()方法:取Graphics类对象为参数,在绘画区画applet的图像。
当想要重画applet的区域时调用该方法。repaint()方法是调用update()方法发出applet需要更新的信号。
update()方法的缺省操作是清除applet区域和调用paint()方法,如果不想清除applet区域可以超越update()方法。
使用paint()和print帮助理解applet的生命周期
import java.awt.Graphics;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;

public class Test2 extends JApplet{
    int a = 0;
    public void init(){
        a++;
        System.out.println("init"+a);
    }
    public void start(){
        a++;
        System.out.println("start"+a);
    }

    public void stop(){
        a++;
        System.out.println("stop"+a);
    }
    public void destroy(){
        a++;
        System.out.println("destroy"+a);
    }
    public void paint(Graphics g){
        a++;
        System.out.println("paint"+a);
        g.drawString("什么神奇"+a+"次", 20, 20);
    }
}

------------------------------------------------------------------

设置字体大小和颜色属性
----------------------------------------------------------------------------------------------------------
Graphics类和Font类和FontMetrics类结合在一起,就能在屏幕上显示文本。
Font类表示一个给定的字体,它的文本类型和点的大小。
FontMetrics类给出有关字体的信息,如一个给定字符的实际高度和宽度。下面我们不使用这个。

import java.awt.Font;
import java.awt.Graphics;

import javax.swing.JApplet;

public class Test3 extends JApplet {
    public void init(){

    }
    public void paint(Graphics g){
        Font font = new Font("宋体",Font.BOLD,24);
        g.setFont(font);
        g.drawString("什么神奇", 40, 40);
    }
}

上面代码中先是实例化Font,然后将该对象给g.setFont(),这样就能设置字体了,然后在画出这个字体。下面就是颜色的使用。
颜色主要就是Color类,可以用下面的方法来创建颜色

Color c = new Color(0.55,0.55,0.55);
1
构造函数的参数是rgb值,这个值就代表了颜色。当然,Color类中也提供了静态的属性直接使用颜色名获得颜色

Color.red

使用一个Graphics类对象的方法来设置颜色:g.setColor(Color.red);
也可以设置当前applet颜色:setForeground(g.getColor());//如果已经设置了字体颜色,那个这个setForeground将不作用于字体

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;

import javax.swing.JApplet;

public class Test3 extends JApplet {
    public void init(){

    }
    public void paint(Graphics g){
        Font font = new Font("宋体",Font.BOLD,24);
        g.setColor(Color.red);
        g.setFont(font);
        g.drawString("什么神奇", 40, 40);
    }
}

=============================================

 AppletContext接口
-----------------------------------------------------------------------------------
使用getAppletContext()获取当前applet的上下文环境。
使用showStatus()方法改变显示在浏览器状态栏上的信息。
使用showDocument()方法请求浏览器显示一个URL地址对应的HTML文件。
java
showDocument(URL);
showDocument(URL urlObj.String target);//target可以为各级窗口
URL getCodeBase()是从浏览器获取applet的URL地址
URL getDocumentBase()用于从浏览器获得applet所嵌入的HTML文件的URL地址。
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.JApplet;

public class Test3 extends JApplet {
    public void init(){
        getAppletContext().showStatus("连接中");
        try {
            getAppletContext().showDocument(new URL("http://www.baidu.com"));
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
}


上面代码是演示不出效果的,只有在浏览器中才能看到,我这里的浏览器已经全面禁止了applet,就算加载插接件也没办法。在计算机二级中,只需要死记以上几种方法的作用即可。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。