linkapplet.java

来自「java网络高级编程的配套源码,java网络高级编程为清华出版社出版.」· Java 代码 · 共 279 行

JAVA
279
字号
/*源程序清单12-31*/

package Link;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import borland.jbcl.layout.*;
import borland.jbcl.control.*;
import java.util.*;
import java.net.*;

public class LinkApplet extends Applet implements MouseListener
{
  boolean isStandalone = false;
  Vector name=new Vector();
    //所有条幅名称
  Vector value=new Vector();
    //所有条幅的跳转页面地址
  Color bkColor;
    //背景颜色
  Color forecolor;
    //前景颜色
  Color activeColor;
    //活动字体颜色
  Vector labelVector=new Vector();
  int sleepTime=0;
    //字体滚动暂停时间
  int alignment=0;
    //字体对齐方式
  String openType;
    //页面打开方式
  XYLayout xyLayout1=new XYLayout();
  AppletContext ac=null;
	
	  public LinkApplet()
  {
	  }
	
  public void init()
  {
    try
    {
      int num=Integer.parseInt(getParameter("linknumber"));
      for(int i=0;i<num;i++)
      {
        String  param="link"+i+"name";
        name.addElement(getParameter(param));
        param="link"+i;
        value.addElement(getParameter(param));
      }
      String color=getParameter("bkcolor");
      if(color.equals("black"))
        bkColor=Color.black;
      else if(color.equals("blue"))
        bkColor=Color.blue;
      else if(color.equals("cyan"))
        bkColor=Color.cyan;
      else if(color.equals("darkGray"))
        bkColor=Color.darkGray;
      else if(color.equals("gray"))
        bkColor=Color.gray;
      else if(color.equals("green"))
        bkColor=Color.green;
      else if(color.equals("lightGray"))
		bkColor=Color.lightGray;
  else if(color.equals("magenta"))
        bkColor=Color.magenta;
      else if(color.equals("orange"))
        bkColor=Color.orange;
      else if(color.equals("pink"))
        bkColor=Color.pink;
      else if(color.equals("red"))
        bkColor=Color.red;
      else if(color.equals("white"))
        bkColor=Color.white;
      else if(color.equals("yellow"))
        bkColor=Color.yellow;
      color=getParameter("forecolor");
      if(color.equals("black"))
        forecolor=Color.black;
      else if(color.equals("blue"))
        forecolor=Color.blue;
      else if(color.equals("cyan"))
        forecolor=Color.cyan;
      else if(color.equals("darkGray"))
        forecolor=Color.darkGray;
      else if(color.equals("gray"))
        forecolor=Color.gray;
      else if(color.equals("green"))
        forecolor=Color.green;
      else if(color.equals("lightGray"))
        forecolor=Color.lightGray;
      else if(color.equals("magenta"))
        forecolor=Color.magenta;
      else if(color.equals("orange"))
        forecolor=Color.orange;
      else if(color.equals("pink"))
        forecolor=Color.pink;
      else if(color.equals("red"))
        forecolor=Color.red;
      else if(color.equals("white"))
        forecolor=Color.white;
      else if(color.equals("yellow"))
        forecolor=Color.yellow;
      color=getParameter("activecolor");
      if(color.equals("black"))
        activeColor=Color.black;
      else if(color.equals("blue"))
        activeColor=Color.blue;
      else if(color.equals("cyan"))
        activeColor=Color.cyan;
      else if(color.equals("darkGray"))
        activeColor=Color.darkGray;
      else if(color.equals("gray"))
        activeColor=Color.gray;
      else if(color.equals("green"))
        activeColor=Color.green;
      else if(color.equals("lightGray"))
        activeColor=Color.lightGray;
      else if(color.equals("magenta"))
        activeColor=Color.magenta;
      else if(color.equals("orange"))
        activeColor=Color.orange;
      else if(color.equals("pink"))
        activeColor=Color.pink;
      else if(color.equals("red"))
        activeColor=Color.red;
      else if(color.equals("white"))
        activeColor=Color.white;
      else if(color.equals("yellow"))
        activeColor=Color.yellow;
      sleepTime=Integer.parseInt(getParameter("sleeptime"));
      openType=getParameter("openType");
      alignment=Integer.parseInt(getParameter("alignment"));      
      jbInit();
      run();
      ac=getAppletContext();
      }
      catch (Exception e)
      {
        e.printStackTrace();
      }
  }

  //Component initialization
  private void jbInit() throws Exception
  {
    this.setLayout(xYLayout1);
    this.setBackground(bkColor);
    this.setForeground(forecolor);
  }

  public void run()
  {
    try
    {
      int size=name.size();
          //得到条幅的数量
      int width=this.getSize().width;
          //得到applet的宽度
      int height=this.getSize().height;
          //得到applet的高度
      int labelHeight=(height-5*size-5)/size;
          //计算label的大概高度
      for(int i=0;i<size;i++)
      {
        Label label=new Label();
        label.setAlignment(alignment);
           //设置label的对齐方式
        add(label,new XYConstraints(5,(i+1)*5+labelHeight*i, width-10,labelHeight));
        labelVector.addElement(label);
           //将label添加到矢量表中
        label.addMouseListener(this);
           //通知监听器对象
      }
      Scroll scroll=new Scroll(labelVector,name,value,sleepTime);
      scroll.start();
    }
    catch(Exception e)
    {
      System.out.println(e.toString());
    }
  }
  
  public void mouseClicked(MouseEvent e)
  {
  }

  public void mousePressed(MouseEvent e)
  {
     Label label=(Label)e.getComponent();
     label.setForeground(activeColor);
  }

  public void mouseReleased(MouseEvent e)
  {
    try
    {
      Label label=(Label)e.getComponent();
      label.setForeground(forecolor);
      String text=label.getText();
      int m=name.indexOf(text);
      String hotLink=(String)value.elementAt(m);
      URL url=new URL(hotLink);
      ac.showDocument(url,openType);
    }
    catch(Exception ee)
    {
      System.out.println(ee.toString());
    }
  }

  public void mouseEntered(MouseEvent e)
  {
    Cursor c=new Cursor(Cursor.HAND_CURSOR);
    this.setCursor(c);
  }

  public void mouseExited(MouseEvent e)
  {
    Cursor c=new Cursor(Cursor.DEFAULT_CURSOR);
    this.setCursor(c);
  }
}

class Scroll extends Thread
{
  Vector label=new Vector();
  Vector name=new Vector();
  Vector value=new Vector();
  int sleepTime;

  public Scroll(Vector l,Vector n,Vector v,int time)
  {
    for(int i=0;i<l.size();i++)
    {
      label.addElement((Label)l.elementAt(i));
      name.addElement((String)n.elementAt(i));
      value.addElement((String)v.elementAt(i));
    }
    this.sleepTime=time;
  }

  public void run()
  {
    try{
      int mn=0;
      int size=name.size();
      while(true)
      {
        for(int i=0;i<size;i++)
        {
          Label l=(Label)label.elementAt(i);
          int number=mn+i;
          if(number==size)
            number=0;
          else if(number==size+1)
            number=1;
          else if(number==size+2)
            number=2;
          else if(number==size+3)
            number=3;
          l.setText((String)name.elementAt(number));
        }
        mn++;
        if(mn==size)
          mn=0;
        Thread.sleep(sleepTime);
      }
    }
    catch(Exception e)
    {
      System.out.println(e.toString());
    }
  }
}

⌨️ 快捷键说明

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