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

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

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

    大耍菜刀(生氣的JLabel)

    JLabel 這么強(qiáng)大的組件 ..大家竟然認(rèn)為他不帥!!!!!!
    JLabel聽(tīng)到后非常非常的生氣!!!!!!!!!于是就出現(xiàn)了下面的JLabel
    由于是動(dòng)態(tài)的火焰..只能一張一張截了...你可以自己拿去運(yùn)行一下看看效果




    下面不廢話(huà)了..
    源碼:
    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) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Swing文章

    評(píng)論

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

    很強(qiáng)大的說(shuō)  回復(fù)  更多評(píng)論   

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

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    不顯示applet

    常用鏈接

    留言簿(16)

    我參與的團(tuán)隊(duì)

    隨筆檔案

    文章分類(lèi)

    文章檔案

    新聞檔案

    相冊(cè)

    swingchina 專(zhuān)業(yè)搞Swing的網(wǎng)站

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 免费中文字幕视频| 美国免费高清一级毛片| 亚洲最大福利视频| 日本亚洲中午字幕乱码| 一个人看的www免费在线视频| 黄页免费在线观看| 日本视频一区在线观看免费| 女人张开腿等男人桶免费视频| 午夜亚洲国产成人不卡在线| 在线亚洲午夜理论AV大片| 久久亚洲私人国产精品vA| 亚洲欧美不卡高清在线| 黄色视频在线免费观看| 永久黄色免费网站| 国产无遮挡吃胸膜奶免费看| 国产亚洲精品国产| 涩涩色中文综合亚洲| jizz18免费视频| 69式国产真人免费视频| 亚洲第一网站男人都懂| 日本久久久久亚洲中字幕| 色欲aⅴ亚洲情无码AV蜜桃| 久久免费观看视频| 成人无码区免费A片视频WWW| 亚洲国产成人久久综合区| 久久亚洲AV成人出白浆无码国产| 亚洲国产AV一区二区三区四区| 免费看黄的成人APP| 成人无码区免费视频观看| 久久乐国产精品亚洲综合| 亚洲成A∨人片在线观看无码| 特级毛片aaaa级毛片免费| 色欲A∨无码蜜臀AV免费播| 日本成人免费在线| 亚洲国产精品lv| 高潮毛片无遮挡高清免费| aⅴ免费在线观看| 久久久久亚洲精品天堂久久久久久 | 在线观看成人免费| 亚洲av色福利天堂| 免费人成视频在线播放|