java之gui applet生命周期详解!
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,就算加载插接件也没办法。在计算机二级中,只需要死记以上几种方法的作用即可。
- 点赞
- 收藏
- 关注作者
评论(0)