Java Swing編程:Applet和JApplet
雖然現(xiàn)在已經(jīng)不是Applet的時代了,applet過于強大導(dǎo)致客戶端的不安全性,還要求客戶端安裝JAVA運行環(huán)境,flash已經(jīng)成為web應(yīng)用的主流,現(xiàn)在每個游覽器基本都安裝了flash播放器,但Applet可是Java語言的開端。
Applet和一般的java程序最大區(qū)別就是沒有main函數(shù)入口,他是通過繼承Applet類。
這個類有5個特殊方法
init:初始化
start:啟動時執(zhí)行
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));
- //顯式調(diào)用HelloApplet對象的init、start方法
- panel.init();
- panel.start();
- jf.add(panel);
- jf.pack();
- jf.setVisible(true);
- }
- }
其中我們把Applet當(dāng)成容器來使用,把他加入JFrame,用main作為入口運行。
放到網(wǎng)頁中就不需要main,但要通過網(wǎng)頁掉用
調(diào)用方法如下
- <applet codebase="." code="HelloApplet" width=400 height=300 name="HelloApplet">
- <param name=name value="HelloApplet">
- </applet>
這個文件一般利用JDK目錄下的bin中的HtmlConverter來轉(zhuǎn)換,手動寫對不同游覽器還是挺吃力的。
下面再看個Applet動畫,eg
- public class ScApplet extends Applet
- {
- final String testStr = "Java真好玩,學(xué)習(xí)很有趣!";
- //用于保存字符串下一次出現(xiàn)的座標(biāo)
- 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)
- {
- //隨機生成下一次座標(biāo)、顏色、字體大小
- 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);
- }
- }
大家可以把玩下,其實還是挺好玩的。
原文鏈接:http://blog.csdn.net/terryzero/article/details/3792261
【編輯推薦】