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

📄 scroll.java

📁 Java 范例实战 光盘使用说明 ========================== 本光盘的文件结构如下所示: =====================================
💻 JAVA
字号:
import java.applet.Applet;
import java.awt.*;
import java.util.StringTokenizer;

public class Scroll extends Applet implements Runnable
{
    
    Thread timerThread ;
    int curX = 0;
    int scrollX, scrollY, scrollW, scrollH,
        delta, delay,
        messageW, messageH ;
    Font font ;
    FontMetrics fontMet ;
    String message = null;
    Color rectColor = null;
    Color textColor = null;

    public Scroll() {}

    String getParameter(String s1, String s2)
    {
    
        String s = getParameter(s1) ;
        return (s == null) ? s2 : s ;
    
    }

    int getParameter(String s1, int s2)
    {
    
        String s = getParameter(s1) ;
        return (s == null) ? s2 : Integer.parseInt(s) ;
    
    }

    public void init()
    {
    
        message = getParameter("message", 
        	  "please put your message in message param") ;
        delta = getParameter("shift", 5);
        delay = getParameter("delay", 50);

        String s = getParameter("fontstyle", "PLAIN");
        int fontStyle = Font.PLAIN ;
        if (s.toUpperCase().indexOf("BOLD") != -1) 
        	fontStyle |= Font.BOLD ;
        if (s.toUpperCase().indexOf("ITALIC") != -1) 
        	fontStyle |= Font.ITALIC ;
        font = new Font(getParameter("font", "Arial"), 
        	fontStyle, getParameter("fontsize", 12)) ;

        s = getParameter("rectangle", "0 0 " + getSize().width 
        		+ " " + getSize().height);
        StringTokenizer st = new StringTokenizer(s, " ") ;
        scrollX = Integer.parseInt(st.nextToken()) ;
        scrollY = Integer.parseInt(st.nextToken()) ;
        scrollW = Integer.parseInt(st.nextToken()) ;
        scrollH = Integer.parseInt(st.nextToken()) ;

        s = getParameter("RectColor", "000000") ;
        rectColor = new Color(Integer.parseInt(s, 16)) ;
        s = getParameter("TextColor", "ffffff") ;
        textColor = new Color(Integer.parseInt(s, 16)) ;
    
    }

    public void start()
    {
    
        curX = scrollW + scrollX;
        timerThread = new Thread(this);
        timerThread.start();
    
    }

    public void stop()
    {
        
        timerThread = null;
    
    }

    void drawScroll(Graphics g, Rectangle rectangle)
    {
    
        g.clipRect(rectangle.x, rectangle.y, rectangle.width, 
        		rectangle.height);
        g.clipRect(scrollX, scrollY, scrollW, scrollH);
        g.setColor(rectColor);
        g.fillRect(rectangle.x, rectangle.y, rectangle.width,
        	   rectangle.height);
        g.setColor(textColor);
        g.setFont(font);
        g.drawString(message, curX, (scrollH - messageH) / 2 + 
        	     scrollY + fontMet.getAscent());
    
    }

    public void paint(Graphics g)
    {
    
        if(fontMet == null)
        {
    
            fontMet = g.getFontMetrics(font);
            messageW = fontMet.stringWidth(message);
            messageH = fontMet.getHeight();
    
        }
        drawScroll(g, g.getClipBounds());
    
    }

    public void update(Graphics g)
    {
    
        int i = scrollY + (scrollH - messageH) / 2;
        g.copyArea(scrollX + delta, i, scrollW - delta, messageH, 
        	  -delta, 0);
        drawScroll(g, new Rectangle((scrollX + scrollW) - delta, 
        				scrollY, delta, scrollH));
        curX -= delta;
        if(curX < -messageW)
            curX = scrollW + scrollX;
    
    }

    public void run()
    {
    
        while (timerThread == Thread.currentThread())
        {
    
            repaint();
            try
            {
    
                Thread.sleep(delay);
            }
            catch(Exception _ex) { }
    
        }
    
    }

}

⌨️ 快捷键说明

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