import java.applet.*; 
import java.io.*; 
import java.net.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.event.*; 
import java.awt.geom.*; 
//import java.swing.*; public class NewsShow extends Applet implements MouseListener,MouseMotionListener,Runnable{ final static int ONLINK=1; 
final static int LEAVELINK=2; 
boolean version; 
int width; 
int height; 
int blank; 
int depth; 
int fontSize; 
int fontHight; 
int scrollSpeed; 
Color backgroundColor; 
Color textColor; 
Color conTextColor; 
Color textSelectedColor; 
int newsNum; 
String news[]; 
String newsLink[]; 
int style; 
Font font; 
FontMetrics fm; 
int fontHeight; 
int distance; 
Cursor defaultCursor=new Cursor(Cursor.DEFAULT_CURSOR); 
Cursor handCursor=new Cursor(Cursor.HAND_CURSOR); 
Image movedImage; 
boolean move=true; 
boolean hasDraw=false; 
boolean first=true; 
int yPos; 
int xPos=0; 
int lastID=0; public void init() { 
version=Integer.parseInt(getParameter("version"))==1; 
width=Integer.parseInt(getParameter("width")); 
height=Integer.parseInt(getParameter("height")); 
resize(width,height); 
distance=Integer.parseInt(getParameter("distance")); 
depth=Integer.parseInt(getParameter("depth")); 
blank=depth+Integer.parseInt(getParameter("blank")); 
scrollSpeed=Integer.parseInt(getParameter("scrollSpeed")); 
fontSize=Integer.parseInt(getParameter("fontSize")); 
newsNum=Integer.parseInt(getParameter("newsNum")); 
if(version) newsNum++; 
int tmp=Integer.parseInt(getParameter("style")); 
style=(tmp==1)?1:0; 
backgroundColor=getColor(getParameter("backgroundColor")); 
textColor=getColor(getParameter("textColor")); 
conTextColor=new Color(textColor.getRed()^0xff,textColor.getGreen()^0xff,textColor.getBlue()^0xff); 
textSelectedColor=getColor(getParameter("textSelectedColor")); 
news= new String[newsNum]; 
newsLink=new String[newsNum]; 
for(int i=0;i<newsNum-(version?1:0);i++) { 
news[i]=getParameter("news"+i); 
newsLink[i]=getParameter("news"+"Link"+i); 

if(version) { 
news[newsNum-1]=""; 
newsLink[newsNum-1]=""; 

String fontNames[]=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); 
String fontName=getParameter("fontName"); 
for(int i=0;i<fontNames.length;i++) { 
if(fontNames[i].equals(fontName))break; 
if(i==fontNames.length-1)fontName=fontNames[i]; 
System.out.println(fontNames[i]); 

font=new Font(fontName,Font.PLAIN,fontSize); 
setFont(font); 
fm=getFontMetrics(font); 
fontHeight=3*fm.getHeight()/4; 
addMouseListener(this); 
addMouseMotionListener(this); 
yPos=getSize().height-blank; 
movedImage=createImage(getSize().width-blank*2,newsNum*(fontHeight+distance)+fm.getDescent()+getSize().height/2); 
drawImage(movedImage); 
setBackground(backgroundColor); 
} public void start() { 
move=true; 
first=true; 
Thread thread=new Thread(this); 
thread.start(); 

public void run() { 
while(true) { 
if(move) { 
yPos--; 
if(yPos<=blank-movedImage.getHeight(this)+getSize().height/2-3)yPos=getSize().height-blank; 
repaint(); 

try { 
Thread.currentThread().sleep(1000/scrollSpeed); 
}catch(InterruptedException e){} 

} void drawImage(Image image) { 
Graphics2D g=(Graphics2D)movedImage.getGraphics(); 
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); 
g.setFont(font); 
g.setColor(backgroundColor); 
g.fillRect(0,0,image.getWidth(this),image.getHeight(this)); 
g.setColor(textColor); 
for(int i=0;i<newsNum;i++) { 
if(i==newsNum-1&&version) g.setColor(conTextColor); 
g.drawString(news[i],0,(fontHeight+distance)*(i+1)); 

} public void update(Graphics g) { 
paint(g); 
} public void stop() { 
move=false; 

public void paint(Graphics g) { 
Color dark=backgroundColor.darker(); 
Color bright=backgroundColor.brighter(); 
if(style==0)g.setColor(dark); 
else g.setColor(bright); 
for(int i=0;i<depth-1;i++) { 
g.drawLine(0,i,getSize().width-i-2,i); 
g.drawLine(i,0,i,getSize().height-i-2); 

if(style==0)g.setColor(bright); 
else g.setColor(dark); 
for(int i=0;i<depth-1;i++) { 
g.drawLine(getSize().width-i-1,i,getSize().width-i-1,getSize().height); 
g.drawLine(i+1,getSize().height-i-1,getSize().width,getSize().height-i-1); 

g.setClip(blank,blank,getSize().width-blank*2,getSize().height-blank*2); 
g.drawImage(movedImage,blank,yPos,this); 
} Color getColor(String inStr) { 
StreamTokenizer st=new StreamTokenizer(new StringReader(inStr)); 
int rgb[]=new int[3]; 
int i=0; 
try { 
while(i<3) { 
if(st.nextToken()==st.TT_NUMBER) rgb[i++]=(int)st.nval; 
else if(st.ttype==st.TT_EOF)break; 

}catch(IOException e){} 
return new Color(rgb[0],rgb[1],rgb[2]); 
} public void mouseEntered(MouseEvent e) { 
move=false; 
} public void mouseClicked(MouseEvent e) { 
int id=getLinkID(e.getPoint()); 
if(id>=0) openLink(newsLink[id%newsNum]); 

public void mouseExited(MouseEvent e) { 
move=true; 
setCursor(defaultCursor); 
} public void mousePressed(MouseEvent e) { 
} public void mouseReleased(MouseEvent e) { 
} public void mouseDragged(MouseEvent e) { 
} public void mouseMoved(MouseEvent e) { 
Point p=e.getPoint(); 
int id=getLinkID(p); 
if(id>=0&&!hasDraw) { 
drawLink(id,ONLINK); 
hasDraw=true; 
setCursor(handCursor); 
lastID=id; 
}else if(id<0&&hasDraw) { 
xPos=0; 
drawLink(lastID,LEAVELINK); 
hasDraw=false; 
setCursor(defaultCursor); 
}else if(id>=0) { 
int length=(int)(fm.getStringBounds(news[id%newsNum],getGraphics()).getWidth()-getSize().width+2*blank)+news[id%newsNum].length()/4; 
if(length<0)length=0; 
if(p.x<getSize().width/2&&xPos>-length) { 
xPos-=3; 
drawLink(-id,ONLINK); 
}else if(p.x>getSize().width/2&&xPos<0) { 
xPos+=3; 
drawLink(-id,ONLINK); 


} void drawLink(int id,int status) { 
int newID=id<0?-id:id; 
Point basePoint=getBasePoint(newID); 
Graphics2D g=(Graphics2D)getGraphics(); 
g.setClip(blank,blank,getSize().width-blank*2,getSize().height-blank*2); 
g.setColor(backgroundColor); 
g.fillRect(blank,basePoint.y-fontHeight,movedImage.getWidth(this),fontHeight+fm.getLeading()*2); 
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); 
if(status==ONLINK) g.setColor(textSelectedColor); 
else if(status==LEAVELINK) g.setColor(textColor); 
if(status==LEAVELINK&&version&&id==newsNum-1)g.setColor(conTextColor); 
if(id>0) g.drawString(news[id%newsNum],basePoint.x,basePoint.y); 
else g.drawString(news[(-id)%newsNum],basePoint.x+xPos,basePoint.y); 

int getLinkID(Point p) { 
if(((p.y-yPos)%(fontHeight+distance)>(distance))&&((p.y-yPos)/(fontHeight+distance))<newsNum) { 
return ((p.y-yPos)/(fontHeight+distance)); 
}else return -1; 

Point getBasePoint(int id) { 
return new Point(blank,(id+1)*(fontHeight+distance)+yPos); 

void openLink(String link) { 
AppletContext appletCon=getAppletContext(); 
try { 
appletCon.showDocument(new URL(link),"_blank"); 
}catch(MalformedURLException e) {System.out.println(link+e);} 


解决方案 »

  1.   

    接上
    //----------html file-----------//
    <applet WIDTH=400 HEIGHT=200 CODE=NewsShow.class ><param name="width" value="200"> 
    <param name="height" value="100"> 
    <param name="backgroundColor" value="0,159,236"> 
    <param name="textColor" value="255,255,0"> 
    <param name="textSelectedColor" value="128,255,255"> 
    <param name="style" value="0"> 
    <param name="fontName" value="楷体_GB2312"> 
    <param name="fontSize" value="12"> 
    <param name="blank" value="6"> 
    <param name="depth" value="4"> 
    <param name="distance" value="3"> 
    <param name="scrollSpeed" value="20"> 
    <param name="version" value="1"> 
    <param name="newsNum" value="3"> 
    <param name="news0" value="每个要运行这个程序的机器要先安装JRE1.3(Java Runtime Environment--Java运行环境) "> 
    <param name="newsLink0" value="http://www.sina.com.cn"> 
    <param name="news1" value="在信息的左半部分移动鼠标,信息向左滚动,在右半部分移动鼠标,信息向右滚动"> 
    <param name="newsLink1" value="http://www.sohu.com"> 
    <param name="news2" value="ShowNews.class 所在路径不能有中文"> 
    <param name="newsLink2" value="http://www.huawei.com"> </applet>
      

  2.   

    吓人啊你,别人问你怎么用链接,直接一点不就好了吗
    使用applet中提供的一个接口方法。
    getAppletContext().showDocument(new URL("http://www.csdn.net"), "_blank");================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  3.   

    晕真是受不了webwing(kevin) 别人问你怎么连接你干吗要把所有的代码写上去啊
    是你自己不知道哪些是,还是怕别人看懂啊
    再晕!
      

  4.   

    请教telenths(非法操作) ,能否再写得具体一点?
      

  5.   

    我想再请教telenths(非法操作) 大哥一个问题:那就是我如果想传递参数给页面(参数个数不定),又该怎么办??
      

  6.   

    JLabel jLabel1 = new JLabel();
    jLabel1.setText("Link CSDN"); 
    jLabel1.addMouseListener(new java.awt.event.MouseAdapter() {//加一个鼠标事件响应
        public void mouseClicked(MouseEvent e) {
           getAppletContext().showDocument(new URL("http://www.csdn.net"), "_blank");      }
        });
    //----------------------------------------------------
    要传递参数的话,可以调用 JavaScript ,让 JavaScript 来处理
    getAppletContext().showDocument(new URL("Script(P1,P2)"), "_blank");
    //其中 Script 是你定义的 JavaScript 函数
      

  7.   

    对不起,第二个传递参数的方法不对,这只是调用了一个 URL ,
    我想好了在告诉你
    不过你可以用这种方法调用浏览器支持的 JavaScript 比如说
    getAppletContext().showDocument(new URL("JavaScript:window.close()"), "_blank");