Java Swing编程:Applet和JApplet

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);  



    }  


} 

相关推荐

tianfeng / 0评论 2011-10-14