LonelyBubble 2012-01-17
虽然现在已经不是Applet的时代了,applet过于强大导致客户端的不安全性,还要求客户端安装JAVA运行环境,flash已经成为web应用的主流,现在每个游览器基本都安装了flash播放器,但Applet可是Java语言的开端。
Applet和一般的java程序最大区别就是没有main函数入口,他是通过继承Applet类。
这个类有5个特殊方法
init:初始化
start:启动时执行
stop:停止
destroy:于init相对
paint:绘制界面
下面看具体代码,eg
public class HelloApplet extends JApplet { //初始化Applet的方法 public void init() { setLayout(new FlowLayout()); add(new JButton("XXX")); add(new JButton("YYY")); } //启动Applet的方法 public void start() { System.out.println("start方法"); } //绘制Applet界面的方法 public void paint(Graphics g) { super.paint(g); System.out.println("paint方法"); g.drawLine(3 , 3 , 200 , 300); } //停止Applet的方法 public void stop() { System.out.println("stop方法"); } //销毁Applet的方法 public void destroy() { System.out.println("destroy方法"); } public static void main(String[] args) { JFrame jf = new JFrame(); JApplet panel = new HelloApplet(); panel.setPreferredSize(new Dimension(300, 400)); //显式调用HelloApplet对象的init、start方法 panel.init(); panel.start(); jf.add(panel); jf.pack(); jf.setVisible(true); } }
其中我们把Applet当成容器来使用,把他加入JFrame,用main作为入口运行。
放到网页中就不需要main,但要通过网页掉用
调用方法如下
<applet codebase="." code="HelloApplet" width=400 height=300 name="HelloApplet"> <param name=name value="HelloApplet"> </applet>
这个文件一般利用JDK目录下的bin中的HtmlConverter来转换,手动写对不同游览器还是挺吃力的。
下面再看个Applet动画,eg
public class ScApplet extends Applet { final String testStr = "Java真好玩,学习很有趣!"; //用于保存字符串下一次出现的座标 private int nextX; private int nextY; private Color nextColor; private Font nextFont; java.util.Random rand = new java.util.Random(System.currentTimeMillis()); public void init() { Timer timer = new Timer(200 , new ActionListener() { public void actionPerformed(ActionEvent event) { //随机生成下一次座标、颜色、字体大小 nextX = rand.nextInt(400); nextY = rand.nextInt(300); nextColor = new Color(rand.nextInt(255) , rand.nextInt(255) , rand.nextInt(255)); nextFont = new Font("Times" , Font.BOLD , rand.nextInt(60)); //强制重绘 repaint(); } }); timer.start(); } //绘制Applet界面的方法 public void paint(Graphics g) { g.setColor(nextColor); g.setFont(nextFont); g.drawString(testStr, nextX, nextY); } public static void main(String[] args) { JFrame jf = new JFrame(); ScApplet panel = new ScApplet(); panel.setPreferredSize(new Dimension(400, 300)); panel.init(); panel.start(); jf.add(panel); jf.pack(); jf.setVisible(true); } }