9.1 Applet 概述
一种嵌入HTML文档中的Java程序 。
与Application相比,Applet具有明显的优点
- Web浏览器提供了运行Applet所需要的许多功能
- Applet是在运行时通过网络从服务器端下载的,因而便于软件的发布和及时更新
Applet也有其局限性
- 不能在客户机上读写当地文件
- 不能连接除它所在的服务器以外的其它机器
9.2 JApplet类
一个applet程序需要继承 javax.swing包中的JApplet类
import java.awt.Graphics;
import javax.swing.JApplet;
public class MyApplet extends JApplet{
public void paint(Graphics g) { //重载JApplet类的paint方法
//参数是Graphics类的对象,是由浏览器传递过来的
super.paint(g); //调用其超类JApplet类的paint方法
g.drawString("This is a Java Applet!",25,25);
}
}
JApplet类提供了applet在浏览器中运行需要具备的特定方法
- 浏览器载入时,要依次运行init、start、paint方法
- 离开浏览器页面时,执行stop
- 退出浏览器时,执行destroy
public void start() | init方法执行结束之后,自动调用这个方法。另外,当浏览器用户在访问另一个网址之后重新返回applet所在的HTML页时,将再次调用start方法 |
public void paint(Graphics g) | start方法启动后调用此方法,另外每次需要重绘applet时也将调用该方法。程序通常不直接调用paint |
public void repaint() | 在响应用户和Applet的交互时经常要用到。通常只是调用,而不重写这个方法。对于轻量级组件,它调用组件的paint方法,对重量级组件它调用组件的update方法,由update调用paint |
public void stop() | 用户离开Applet所在的HTML页时调用该方法,它执行挂起Applet所需的所有任务,例如停止动画和线程 |
public void destroy() | 用户关闭浏览器窗口,Applet将从内存中移走的时候调用该方法 |
9.3 绘图
import java.awt.* 导入字体 颜色 图形包
9.4 Swing基础
图形界面设计的一般步骤
- 选择容器。
- 确定布局。
- 向容器中添加组件。
- 进行事件处理。
应用Swing组件的Applet
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingApplet extends JApplet{
public void init() {
Container contentPane=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( new ActionListener(){
public void actionPerformed(ActionEvent event) {
String information=JOptionPane.showInputDialog("请输入一串字符");
label.setText(information);
} } );//创建监听器语句结束
}//init方法结束
}
把JApplet换成JFrame,将例9-4的程序改为Application
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class SwingApplication {
public static void 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( 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);
}
}
9.5 Swing的特点和概念
顶层容器 Swing提供三个顶层容器的类
- JFrame 实现单个主窗口
- JDialog 实现一个二级窗口(对话框)
- JApplet 在浏览器窗口中实现一个applet显示区域
Application和Applet的区别
比较项目 | Applet | Application |
程序结构 | init()初始设置; start()开始运行; stop()停止; destory()内存清理; paint()绘图处理; | 由main()开始 在构造函数中初始化设置 |
开发工具 | javac编译,appletviewer或浏览器查看 | javac编译 java运行字节码文件 |
运行环境 | 浏览器上 | JRE中 |
传播方式 | HTML格式网页或APP传送 | 和JRE发布 |
图形界面 | 必要 | 非必要 |
变量输入 | 嵌入Web文件中 | 命令行输入 |
应用范围 | 网页 | 服务器 |