⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 navigatorticker.java

📁 变色文字跑马灯. 并且跑马灯的文字大小是由程序根据Applet画面的大小
💻 JAVA
字号:
import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.io.PrintStream;
import java.net.URL;
import java.util.*;

public class NavigatorTicker extends Applet implements Runnable {
    public int messageIndex = 0,
               messageCount = 0,
               messageX = 0,
               messageY = 0,
               messageW = 0;
    public Vector msgs = null,
                  msgsW = null,
                  msgsURL = null;
    public Color txtColor = null,
                 linkColor = null,
                 bgColor = null;
    public boolean active = false;
    public String message = null;
    public Font msgFont = null;
    public URL url_ = null;
    public Thread t = null;
    public Dimension lastS = null;
    Image im = null;
    Graphics gr = null;
    boolean display_URL = false;
    int speed = 0,
        mouseX = 0;

    public NavigatorTicker()
    {
        messageCount = 1;
        msgs = new Vector();
        msgsW = new Vector();
        msgsURL = new Vector();
        active = false;
        lastS = new Dimension(1, 1);
        display_URL = false;
    }
    
    public Color readColor(String s, Color color)
    {
        if(s == null)
            return color;
        StringTokenizer stringtokenizer = new StringTokenizer(s, ",");

        try
        {
            int i = Integer.valueOf(stringtokenizer.nextToken())
                           .intValue();
            int j = Integer.valueOf(stringtokenizer.nextToken())
                           .intValue();
            int k = Integer.valueOf(stringtokenizer.nextToken())
                           .intValue();
            return new Color(i, j, k);
        }        
        catch(Exception _ex)
        {
            return color;
        }
        
    }

    public void init()
    {
        String s;
        
        messageCount = (s = getParameter("count")) != null ? 
                       Integer.valueOf(s).intValue() : 0;

        for(int i = 0; i < messageCount; i++)
        {
            s = getParameter("msg" + i);
            StringTokenizer stringtokenizer = 
                            new StringTokenizer(s, "\\");
            msgs.addElement(
                        new String(stringtokenizer.nextToken()));
            msgsURL.addElement(
                        new String(stringtokenizer.nextToken()));
        }

        speed = (s = getParameter("speed")) != null ?
                 Integer.valueOf(s).intValue() : 10;
        txtColor = readColor(getParameter("txtColor"), bgColor);
        linkColor = readColor(getParameter("linkColor"), bgColor);
        bgColor = readColor(getParameter("bgColor"),
                            getBackground());
        return;
    }

    public void createParams()
    {
        int i = getSize().width,
            j = getSize().height;

        lastS.width = i;
        lastS.height = j;

        if(gr != null)
            gr.finalize();

        if(im != null)
            im = null;

        byte byte0 = 14;
        Font font = new Font("TimesRoman", 1, byte0);
        setFont(font);
        FontMetrics fontmetrics = getFontMetrics(font);
        int fontSize = fontmetrics.getHeight();
        fontSize = (byte0 * (j - 10)) / fontSize;
        msgFont = new Font("TimesRoman", 1, fontSize);
        FontMetrics fontmetrics1 = getFontMetrics(msgFont);
        fontSize = fontmetrics1.getHeight();
        messageX = i;
        messageY = ((j - fontSize) / 2) + fontmetrics1.getAscent();

        for(int l = 0; l < messageCount; l++)
        {
            msgsW.addElement(new Integer(
            fontmetrics1.stringWidth((String)msgs.elementAt(l))));
            messageW += ((Integer)msgsW.lastElement()).intValue();
        }

        im = createImage(i, j);
        gr = im.getGraphics();
    }

    public void paint(Graphics g)
    {
        update(g);
    }

    public synchronized void update(Graphics g)
    {

        if(getSize().height != lastS.height ||
           getSize().width != lastS.width)
            createParams();

        gr.setColor(bgColor);
        gr.fillRect(0, 0, lastS.width, lastS.height);
        gr.drawRect(0, 0, lastS.width-1, lastS.height-1);
        gr.drawRect(1, 1, lastS.width-3, lastS.height-3);
        gr.setColor(bgColor);
        gr.draw3DRect(2, 2, lastS.width-5, lastS.height-5, true);
        gr.draw3DRect(3, 3, lastS.width-7, lastS.height-7, true);
        gr.clipRect(5, 4, lastS.width-10, lastS.height-8);

        if(display_URL)
        {
            int i = 0;
            int k = mouseX;

            if(k > messageX)
            {
                k -= messageX;

                for(int i1 = 0; i1 < messageCount; i1++)
                {
                    i += ((Integer)msgsW.elementAt(i1)).intValue();

                    if(k >= i)
                        continue;

                    messageIndex = i1;
                    break;
                }

            }

            showStatus((String)msgsURL.elementAt(messageIndex));
        }

        gr.setColor(txtColor);
        gr.setFont(msgFont);
        int j = 0;

        for(int l = 0; l < messageCount; l++)
        {

            if(l == messageIndex && display_URL)
                gr.setColor(linkColor);
            else
                gr.setColor(txtColor);

            gr.drawString((String)msgs.elementAt(l),
                          messageX + j, messageY);
            j += ((Integer)msgsW.elementAt(l)).intValue();
        }

        g.drawImage(im, 0, 0, this);
    }

    public synchronized void nextPos()
    {
        messageX -= speed;
        
        if(messageX + messageW < 0)
            messageX = lastS.width;
            
        repaint();
    }

    public void run()
    {
        Thread.currentThread().setPriority(1);
        
        while(active) 
        {
            nextPos();
        
            try
            {
                Thread.sleep(100L);
            }
            catch(InterruptedException _ex) { }
        }

    }

    public void start()
    {
        
        if(!active)
        {
            t = new Thread(this);
            active = true;
            t.start();
        }
        
    }

    public void stop()
    {
        active = false;
        t = null;
    }

    public boolean mouseEnter(Event event, int i, int j)
    {
        display_URL = true;
        return true;
    }

    public boolean mouseExit(Event event, int i, int j)
    {
        display_URL = false;
        return true;
    }

    public boolean mouseMove(Event event, int i, int j)
    {
        mouseX = i;
        return true;
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -