<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大耍菜刀(生氣的JLabel)

    JLabel 這么強大的組件 ..大家竟然認為他不帥!!!!!!
    JLabel聽到后非常非常的生氣!!!!!!!!!于是就出現了下面的JLabel
    由于是動態的火焰..只能一張一張截了...你可以自己拿去運行一下看看效果




    下面不廢話了..
    源碼:
    package Flame;

    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;

    public class Flame extends JLabel implements Runnable{
        
    boolean first = true;
        //
        
    int ROWS = 50;

        
    int COLS = 64;

        
    int HIDDEN = 4;

        
    int ROWS_SEED = 4;

        
    int ROWS_RESEED = 48;

        
    int MAX_SEED = 8;

        
    int PALETTE_SIZE = 64;

        
    int COOLING_LIMIT = 32;

        
    int COOLING_ROWS = 42;

        
    int COOLING_FACTOR = 2;

        java.awt.Color palette[] 
    = new java.awt.Color[PALETTE_SIZE];

        
    byte Buffer[], Buffer2[];
        
        String NAME;

        String message, textfont;

        
    int textsize, textX, textY;

        Color textcolor;

        Image offScrImage 
    = null;

        Graphics offScrGC;

        Dimension offScrSize;

        Thread kicker 
    = null;
        
        
    public Flame(String name){
            
    this.NAME = name;
            Dimension d 
    = new Dimension(200,72);
            setPreferredSize(d);
            setSize(d);
            setMaximumSize(d);
            setMinimumSize(d);
            init();
            start();
        }

        
        
    public void init() {
            
            
    int r, i;

            COLS 
    = getSize().width;
            ROWS 
    = getSize().height + HIDDEN;

            ROWS_RESEED 
    = (int) (getSize().height * 0.99);

            Buffer 
    = new byte[COLS * ROWS];
            Buffer2 
    = new byte[COLS * ROWS];
           
            
    for (i = 0; i < 16++i)
                palette[i] 
    = new Color(255,2400);

            
    for (i = 0; i < 16++i)
                palette[
    16 + i] = new Color(25516 * i,0);

            
    for (r = COLS * (ROWS - ROWS_SEED); r < (ROWS * COLS); ++r) {
                Buffer[r] 
    = (byte) (PALETTE_SIZE-20);
            }

        }

        
        
    public void MainLoop() {
            
    int r, a, i;
            
    for (r = COLS + 1; r < (COLS * (ROWS - 1)) - 1++r) {
                a 
    = Buffer[r - COLS - 1+ Buffer[r - COLS] + Buffer[r - COLS + 1]
                        
    + Buffer[r - 1+ Buffer[r + 1+ Buffer[r + COLS - 1]
                        
    + Buffer[r + COLS] + Buffer[r + COLS + 1];
                a 
    = (a >> 3);

                Buffer2[r] 
    = (byte) (a);
            }


            
    for (r = COLS * (ROWS_RESEED); r < COLS * (ROWS); ++r) {
                a 
    = Buffer2[r];
                Buffer2[r] 
    = (byte) ((a - (Math.random() * MAX_SEED)) % (PALETTE_SIZE * 1.1));

            }

            
    for (i = 0; i < COLS * (ROWS - 1); ++i)
                Buffer[i] 
    = Buffer2[i + COLS];
        }


        
    public final synchronized void update(Graphics g) {

            Dimension d 
    = getSize();
            
    if ((offScrImage == null|| (d.width != offScrSize.width)
                    
    || (d.height != offScrSize.height)) {
                offScrImage 
    = createImage(d.width, d.height);
                offScrSize 
    = d;
                offScrGC 
    = offScrImage.getGraphics();
            }

            
    if (offScrGC != null{
                offScrGC.fillRect(
    00, d.width, d.height);
                paint(offScrGC);
                g.drawImage(offScrImage, 
    00null);
            }

        }


        
    public void paint(Graphics g) {
            
    super.paint(g);
            
            
    if(null == Buffer){
                
    return;
            }

            
    int a;
            Color c;
            MainLoop();
            
    for (int y = 0; y < (ROWS - HIDDEN); ++y)
                
    for (int x = 0; x < COLS; ++x) {
                    a 
    = Buffer[y * COLS + x];
                    a 
    = a < 0 ? -a : a; //   Patch   nasty   bug     
                    a = a < (PALETTE_SIZE - 1? (a) : (PALETTE_SIZE - 1);
                    c 
    = palette[a];
                    
    try {
                        g.setColor(c);
                        g.drawLine(x, y, x 
    + 1, y);
                    }
     catch (Exception e) {
                    }

                }

            g.setFont(
    new Font("宋體",0,18));
            g.setColor(Color.black);
            g.drawLine(
    0,getHeight()/2+6,this.getWidth(),getHeight()/2+6);
            g.drawString(NAME,
    10,getHeight()/2+10);
            
    try {
            }
     catch (Exception e) {
            }

        }


        
    public void start() {
            
    if (kicker == null{
                kicker 
    = new Thread(this);
                kicker.start();
            }

        }


        
    public void stop() {
            kicker 
    = null;
        }


        
    public void run() {
            
    while (kicker != null{
                
    if(null != this.getGraphics()){
                    update(
    this.getGraphics());
                }

                
    try {
                    kicker.sleep(
    30);
                }
     catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

        }

        
        
    public static void main(String[] args){
            JFrame f 
    = new JFrame("Flame");
            f.setLayout(
    new BorderLayout());
            Flame flame 
    = new Flame("  JLabel很生氣!!!!");
            flame.setFont(
    new Font("宋體",1,18));
            f.getContentPane().add(flame,BorderLayout.SOUTH);
            f.getContentPane().add(
    new JButton(),BorderLayout.CENTER);
            f.getContentPane().add(
    new JButton("我頂"),BorderLayout.NORTH);
            f.getContentPane().add(
    new JButton(),BorderLayout.WEST);
            f.getContentPane().add(
    new JButton(),BorderLayout.EAST);
            f.setSize(
    200,200);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setLocationRelativeTo(
    null);
            f.setVisible(
    true);
        }

    }
     

    posted on 2008-05-23 15:21 相信 閱讀(540) 評論(1)  編輯  收藏 所屬分類: Swing文章

    評論

    # re: 大耍菜刀(生氣的JLabel) 2011-03-24 10:43 venusdrogon

    很強大的說  回復  更多評論   

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    不顯示applet

    常用鏈接

    留言簿(16)

    我參與的團隊

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    swingchina 專業搞Swing的網站

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: aa级女人大片喷水视频免费| 国产亚洲男人的天堂在线观看 | 国产精品免费高清在线观看 | 亚洲成a人片毛片在线| 久久免费福利视频| 亚洲日本一区二区三区| 久久午夜夜伦鲁鲁片无码免费| 亚洲电影一区二区三区| 久久精品乱子伦免费| 777亚洲精品乱码久久久久久 | 亚洲自偷自偷图片| www在线观看播放免费视频日本| 久久久久久A亚洲欧洲AV冫| 久久99精品免费一区二区| 久久精品国产亚洲麻豆| 免费A级毛片无码A∨| 亚洲欧洲日产国码二区首页| 久久久久久久免费视频| 亚洲精华国产精华精华液| 免费v片在线观看无遮挡| 国产成人精品免费视频大全| 国产精品亚洲片在线观看不卡 | 亚洲精品tv久久久久久久久久| 国产精品小视频免费无限app| 国产亚洲精品观看91在线| 99re在线这里只有精品免费| 亚洲制服丝袜精品久久| 四只虎免费永久观看| 99久久免费国产精品热| 亚洲国产中文在线视频| 国产一区二区三区无码免费| 久久成人18免费网站| 亚洲男女一区二区三区| 国产91久久久久久久免费| 好吊色永久免费视频大全| 亚洲电影在线播放| 亚洲成av人片一区二区三区| 久久精品视频免费播放| 粉色视频成年免费人15次| 亚洲色欲色欲综合网站| 全黄性性激高免费视频|