[转]applet导航菜单

import    java.applet.*;   
   import    java.awt.*;   
   import    java.awt.event.*;   
   import    java.util.StringTokenizer;   
   import    java.net.*;   
    
   public    class    Navigator    extends    Applet    implements    ActionListener,    ItemListener    {   
    
       String[][]    urlArray;        //网址数组   
       String[]    target;                //打开网页的方式的变量   
       Button[]    button;                //按钮数组   
       List[]    list;                        //列表框   
       Dimension    largeButtonSize;   
       Component    prevList;          //列表框变量   
       Object    prevSource;            //按钮变量,标识导航条是否打开   
       int    rows,    smallButtonHeight,    listHeightSize;   
       boolean    startSwitch    =    true;   
    
       public    void    init()    {   
           String    bcString,    fcString,    fontName,    fontSize,    fontStyle;   
           Color    buttonColor,    fontColor;   
           int    token    =    0,    fontSizeInt,    fontStyleInt;   
    
           //根据rows定义各个数据的容量   
           rows    =    Integer.parseInt(getParameter("rows"));   
           urlArray    =    new    String[rows][];   
           target    =    new    String[rows];   
           button    =    new    Button[rows];   
           list    =    new    List[rows];   
    
           //根据参数设置字符的字体,大小与风格   
           fontName    =    getParameter("fontName");   
           if    (fontName    ==    null)    fontName    =    "SansSerif";   
           fontStyle    =    getParameter("fontStyle");   
           if    (fontStyle    ==    null)    fontStyleInt    =    1;   
               else    fontStyleInt    =    Integer.parseInt(fontStyle);   
           fontSize    =    getParameter("fontSize");   
           if    (fontSize    ==    null)    fontSizeInt    =    12;   
               else    fontSizeInt    =    Integer.parseInt(fontSize);   
    
           //设置按钮颜色   
           bcString    =    getParameter("buttonColor");   
           if    (bcString    ==    null)    buttonColor    =    new    Color    (0);   
               else    buttonColor    =    new    Color    (Integer.parseInt(bcString));   
           //设置字体颜色   
           fcString    =    getParameter("fontColor");   
           if    (fcString    ==    null)    fontColor    =    new    Color    (16777215);   
               else    fontColor    =    new    Color    (Integer.parseInt(fcString));   
    
           //设置Applet的布局   
           this.setLayout(new    GridLayout(rows,    1));   
    
           for    (int    i    =    0;    i    <    rows;    i++)    {   
               //读取Menu变量的数值   
               StringTokenizer    reader    =    new    StringTokenizer    (getParameter(   
                                                                                                           "menu"    +    i),",");   
               urlArray[i]    =    new    String[reader.countTokens()];   
    
               //创建按钮的代码   
               button[i]    =    new    Button    (reader.nextToken());   
               button[i].setFont(new    Font    (fontName,    fontStyleInt,    fontSizeInt));   
               button[i].setBackground(buttonColor);   
               button[i].setForeground(fontColor);   
               this.add(button[i]);   
               button[i].addActionListener(this);   
    
               //取得网页打开方式的数据   
               target[i]    =    reader.nextToken();   
    
               //创建列表框   
               list[i]    =    new    List();   
               while    (reader.hasMoreTokens())    {   
                   list[i].add(reader.nextToken());   
                   //i定义哪一个列表框,token表示网址在列表框的位置   
                   urlArray[i][token++]    =    reader.nextToken();   
               }   
               list[i].addItemListener(this);   
               token    =    0;   
           }   
       }   
    
       //该事件在init()事件之后发生和当浏览器重新获得焦点时发生   
       public    void    start()    {   
           if    (startSwitch)    {   
               //取得按钮的最大长度   
               largeButtonSize    =    button[0].getSize();   
               //取得按钮的最小长度   
               smallButtonHeight    =    (int)(largeButtonSize.height    /    2);   
               //根据最大,最小长度计算按钮的高度   
               listHeightSize    =    (largeButtonSize.height    *    rows)    -   
                                                 (smallButtonHeight    *    rows);   
               startSwitch    =    false;   
           }    else    {   
               //删除所有按钮   
               this.removeAll();   
               //向Applet重新加入按钮   
               for    (int    i    =    0;    i    <    rows;    i++)    {   
                   this.add(button[i]);   
               }   
               prevSource    =    null;//将按钮变量定义为空值   
           }   
       }   
    
       //处理按钮的单击事件   
       public    void    actionPerformed(ActionEvent    evt)    {   
           int    currentHeightSize    =    0;   
           boolean    oneElementList    =    false;   
    
           Object    source    =    evt.getSource();   
           //将前一个列表框设为不可视   
           if    (prevList    !=    null)   
               prevList.setVisible(false);   
    
           //确定哪一个按钮被击中   
           for    (int    i    =    0;    i    <    rows;    i++)    {   
               //导航条有一个网址的执行代码   
               if    (source    ==    button[i]    &&    list[i].getItemCount()    ==    1)    {   
                   //根据最大的长度与高度重新设置按钮的大小   
                   if    (!largeButtonSize.equals(button[0].getSize()))    {   
                       for    (int    j    =    0;    j    <    rows;    j++)    {   
                           button[j].setBounds(0,    currentHeightSize,    largeButtonSize.   
                                                                   width,    largeButtonSize.height);   
                           currentHeightSize    +=    largeButtonSize.height;   
                       }   
                   }   
                   oneElementList    =    true;   
                   try    {   
                       //打开网页   
                       AppletContext    context    =    getAppletContext();   
                       URL    u    =    new    URL(urlArray[i][0]);   
                       context.showDocument(u,    target[i]);   
                   }   
                   catch(Exception    e)    {   
                       showStatus("Error    "    +    e);   
                   }   
                   break;   
               }   
           }   
    
           //导航条多于一个网址的执行代码   
           if    (!oneElementList)    {   
               //导航条处于打开状态的执行代码   
               if    (prevSource    ==    source)    {   
                   for    (int    i    =    0;    i    <    rows;    i++)    {   
                       button[i].setBounds(0,    currentHeightSize,    largeButtonSize.width,   
                                                               largeButtonSize.height);   
                       currentHeightSize    +=    largeButtonSize.height;   
                   }   
                   prevSource    =    null;   
               }   
               //导航条处于关闭状态的执行代码   
               else    {   
                   prevSource    =    source;   
                   for    (int    i    =    0;    i    <    rows;    i++)    {   
                       button[i].setBounds(0,    currentHeightSize,    largeButtonSize.   
                                                               width,    smallButtonHeight);   
                       currentHeightSize    +=    smallButtonHeight;   
                       //显示相关的列表框   
                       if    (source    ==    button[i])    {   
                           prevList    =    list[i];   
                           this.add(list[i]);   
                           list[i].setBounds(0,    currentHeightSize,    largeButtonSize.   
                                                               width,    listHeightSize);   
                           list[i].setVisible(true);   
                           currentHeightSize    +=    listHeightSize;   
                       }   
                   }   
               }   
           }   
       }   
    
       //列表框的选择事件   
       public    void    itemStateChanged(ItemEvent    evt)    {   
           List    source    =    (List)    evt.getSource();   
           int    listIndex    =    source.getSelectedIndex();   
           //处理列表框的选择事件   
           if    (evt.getStateChange()    ==    ItemEvent.SELECTED)    {   
               for    (int    i    =    0;    i    <    rows;    i++)    {   
                   //应用下面语句找到选择项   
                   if    (source    ==    list[i])    {   
                       try    {   
                           //使用context类的showDocument方法打开联接   
                           AppletContext    context    =    getAppletContext();   
                           URL    u    =    new    URL(urlArray[i][listIndex]);   
                           context.showDocument(u,    target[i]);   
                       }   
                       catch(Exception    e)    {   
                           showStatus("Error    "    +    e);   
                       }   
                       break;   
                   }   
               }   
           }   
       }   
   }   
==========================================================

网页为:

下面是引用该applet的网页文件:   
   <applet    width="200"    height="500"    code="Navigator.class">   
       <param    name="buttonColor"    value="952768">   
       <param    name="fontColor"    value="16777215">   
       <!--导航1    main指打开新的窗口,其它联接都在该窗口打开-->   
       <param    name="menu0"    value="Java资源网址,main,   
                       主页,    http://java.sun.com,   
                       JDK下载网址,    http://java.sun.com/j2se/1.4/download.html,   
                       J2EE下载网址,    http://java.sun.com/j2ee/download.html">   
       <!--导航2    _parent指在当前窗口打开连接-->   
       <param    name="menu1"    value="Borland资源网址,_parent,   
                       主页,    http://www.borland.com,   
                       Jbuilder下载网址,    http://www.borland.com/products/downloads   
                                                         /download_jbuilder.html,">   
       <!--导航3-->   
       <param    name="menu2"    value="Mysql资源网址,_parent,   
                       Mysql官方网站,http://www.mysql.org,   
                       Mysql数据库下载网址,http://www.mysql.com/downloads/index.html,   
                       MyOdbc下载网址,http://www.mysql.com/products/myodbc/index.html   
                       ">   
       <!--导航4-->   
       <param    name="menu3"    value="XML资源网址,main,   
                       XML官方网站,http://www.xml.org,   
                       XML新闻网站,http://www.xml.org/xml/news_market.shtml">   
       <!--导航5-->   
       <param    name="menu4"    value="Oracle资源网址,main,   
                       Oracle官方网址,http://www.oracle.com,   
                       Oracle    9i数据库下载网址,   
                       http://otn.oracle.com/software/content.html">   
       <!--定义导航条的总数-->   
       <param    name="rows"    value="5">   
   </applet>   
 

你可能感兴趣的:([转]applet导航菜单)