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

📄 lnavbar.java

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

public class LNavBar extends Applet {
    Image offScreenImage = null;
    Graphics offScreen = null;
    Rectangle buttonRect[] = null;
    Dimension d;
    String fontName = null, 
           temp = null,
           buttonName[] = null,
           buttonLink[] = null;
    Color txtColor = null,
          btnColor = null,
          viewColor = null,
          mouseColor = null,
          allColor = null,
          backColor = null;
    int Buttons = 0, 
        whichButton = 0, 
        mouseButton = 0,
        distance = 0,
        buttonWidth = 0,
        fontSize = 0;

    public LNavBar()
    {
        whichButton = -1;
        mouseButton = -1;
        distance = 6;
    }

    private Color parseColorString(String s, Color c)
    {

        try
        {
            return new Color(Integer.parseInt(s, 16));
        }
        catch(NumberFormatException _ex)
        {
            return c;
        }

    }

    public void init()
    {
        d = getSize();
        Buttons = (temp = getParameter("Count")) == null ? 
                  0 : Integer.parseInt(temp);
        fontSize = (temp = getParameter("FontSize")) == null ?
                  14 : Integer.parseInt(temp);
        whichButton = (temp = getParameter("ViewButton")) == null ?
                  -1 : Integer.parseInt(temp);
        txtColor = parseColorString(getParameter("TxtColor"),
                                    Color.white);
        btnColor = parseColorString(getParameter("BtnColor"),
                                    Color.gray);
        mouseColor = parseColorString(getParameter("MouseColor"),
                                      Color.red);
        viewColor = parseColorString(getParameter("ViewColor"),
                                     Color.blue);
        allColor = parseColorString(getParameter("AllColor"),
                                    Color.darkGray);
        backColor = parseColorString(getParameter("BackColor"),
                                     Color.white);
        fontName = getParameter("FontName");
        buttonWidth = d.width / Buttons - 
                      (distance + distance / Buttons);
        buttonName = new String[Buttons];
        buttonLink = new String[Buttons];
        buttonRect = new Rectangle[Buttons];

        for (int i = 0; i < Buttons; i++)
        {        
            buttonName[i] = getParameter("BtnName"+(i+1));
            buttonLink[i] = getParameter("BtnLink"+(i+1));
            buttonRect[i] = new Rectangle(
                                i*(buttonWidth+distance)+distance,
                                0, buttonWidth, d.height);
        }        
        
        try
        {
            offScreenImage = createImage(d.width, d.height);
            offScreen = offScreenImage.getGraphics();
        }
        catch(Exception _ex)
        {
            offScreen = null;
        }
        
        repaint();
    }

    public void paintApplet(Graphics g)
    {
        g.setColor(backColor);
        g.fillRect(0, 0, d.width, d.height);

        for(int i = 0; i < Buttons; i++)
        {
            g.setColor(btnColor);

            if(i == whichButton)
                g.setColor(viewColor);

            if(i == mouseButton)
                g.setColor(mouseColor);

            if(i == mouseButton && i == whichButton)
                g.setColor(allColor);

            g.fillRect(buttonRect[i].x, buttonRect[i].y, 
                       buttonRect[i].width, buttonRect[i].height);
        }

        g.setColor(txtColor);
        
        if(fontName == null)
            fontName = g.getFont().getFamily();
            
        Font font = new Font(fontName, 1, fontSize);
        g.setFont(font);
        FontMetrics fontmetrics = g.getFontMetrics(font);
        int i1 = ((d.height - fontmetrics.getAscent()) / 2
                 + fontmetrics.getAscent()) - 1;

        for(int j = 0; j < Buttons; j++)
        {
            int k = fontmetrics.stringWidth(buttonName[j]);
            int l = (buttonWidth - k) / 2;
            g.drawString(buttonName[j], l + buttonRect[j].x, i1);
        }
        
    }

    public synchronized void update(Graphics g)
    {

        if(offScreen != null)
        {
            paintApplet(offScreen);
            g.drawImage(offScreenImage, 0, 0, this);
            return;
        }
        else
        {
            paintApplet(g);
            return;
        }

    }

    public int findButton(int i, int j)
    {

        for(int k = 0; k < Buttons; k++)
            if(buttonRect[k].contains(i, j))
                return k;

        return -1;
    }

    void LinkPage(String s)
    {
        URL url = null;

        try
        {
            url = new URL(getDocumentBase(), s);
        }
        catch(MalformedURLException _ex)
        {
            System.out.println("Bad URL address: " + s);
        }

        getAppletContext().showDocument(url, "_self");
    }

    public boolean handleEvent(Event event)
    {

        if(event.target == this)
        {

            switch(event.id)
            {
                case 501: case 503: case 504:

                    if((mouseButton = findButton(event.x, event.y)) != -1)
                    {
                        showStatus(buttonName[mouseButton] + " -> " + buttonLink[mouseButton]);
                        repaint();

                        if(event.id == 501 && mouseButton != whichButton)
                            LinkPage(buttonLink[mouseButton]);

                    }

                    return true;

                case 505:

                    mouseButton = -1;
                    showStatus("");
                    return true;

                default:

                    return super.handleEvent(event);
            }

        }
        else
        {
            return super.handleEvent(event);
        }

    }

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

⌨️ 快捷键说明

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