从html里面传进来一段代码
例如
.....
<span style="background-color: #ff0000; font-family: Arial; font-size: 45pt>Ticker Message number one</span>&nbsp;&nbsp;<span style="background-color: #dd32d2; font-family: Verdana; font-size: 40pt>The Second Ticker Message</span>
....
我在applet里面的代码如下
import java.awt.*;
import java.applet.*;
.........
public class SampleBanner extends Applet implements Runnable{
  String str = "<span style="background-color: #ff0000; font-family: Arial; font-size: 45pt>Ticker Message number one</span>&nbsp;&nbsp;<span style="background-color: #dd32d2; font-family: Verdana; font-size: 40pt>The Second Ticker Message</span>
";
  Thread t ;
  boolean b;
  public void init() {
    setBackground(Color.gray);
    setForeground(Color.yellow);
  }  public void start() {
    t = new Thread(this);
    b = false;
    t.start();
  }  public void run () {
    char ch;
    for( ; ; ) {
      try {
        repaint();
        Thread.sleep(250);
        ch = str.charAt(0);
        str = str.substring(1, str.length());
        str = str + ch;
        } catch(InterruptedException e) {}
    }
  }
  public void paint(Graphics g) {
    g.drawRect(1,1,300,150);
    g.setColor(Color.yellow);
    g.fillRect(1,1,300,150);
    g.setColor(Color.red);
    g.drawString(str, 1, 150);
  }
}
代码我写的不一定对,但是意思就是叫他在浏览器里面显示出来
然后实现滚动的效果,但是我不希望滚动的文字是原文"<span style="background-color: #ff0000; font-family: Arial; font-size: 45pt>Ticker Message number one</span>&nbsp;&nbsp;<span style="background-color: #dd32d2; font-family: Verdana; font-size: 40pt>The Second Ticker Message</span>
而是只现实Ticker Message number one The Second Ticker Message但是他们都按照里面的style效果输出来!
就是滚动效果 Ticker Message number one 字体是黑色,Arial,45pt,The Second Ticker Message黑色 Verdana,40ptapplet可以实现吗??
给个意见 非常的感谢!!

解决方案 »

  1.   

    参考效果例如
    http://www.cp24.com/swf/animateSports.swfhttp://www.cp24.com/swf/animateEntertainmentBottom.swf
    大家帮我一下啊,很头痛!
      

  2.   

    你试试把传入的字符串放在一个JLabel中试试,JLabel支持HTML代码,可以按你写的HTML代码将文字显示出来,但是能不能滚动就不知道了,没试过
      

  3.   

    你直接把JLabel加到applet的面板上就行了啊,然后通过JLabel.setText("传入的HTML代码");设置JLabel的文本内容
      

  4.   

    import java.awt.*;
    import java.applet.*;
    import javax.swing.*;
    public class SampleBanner extends Applet implements Runnable{
    String str = "<span style='color:red;'><b>asdasdasdasd</b></span>";
    Thread t ;
    boolean b;
    public void init() {
    setBackground(Color.gray);
    setForeground(Color.yellow);
    } public void start() {
    t = new Thread(this);
    b = false;
    t.start();
    } public void run () {
    char ch;
    for( ; ; ) {
    try {
    repaint();
    Thread.sleep(250);
    ch = str.charAt(0);
    str = str.substring(1, str.length());
    str = str + ch;
    } catch(InterruptedException e) {}
    }
    }
    public void paint(Graphics g) {
    g.drawRect(1,1,20,30);
    g.setColor(Color.yellow);
    g.fillRect(1,1,20,30);
    g.setColor(Color.red);
    g.drawString(str, 1, 50);
    }
    }
    我现在只实现了滚动,但是文字出不来!!
    能帮我把代码补充进去吗!谢谢了,等了一晚上,终于出现拉!
      

  5.   

    方在jlable里面不行啊!!出来的还是带有标记的,直接文本输出了!
      

  6.   

    JLabel中是支持HTML代码的,但要用<HTML></HTML>把你写的代码括起来,我一般用来实现字符的下划线效果
    但是我试了一下,貌似你要的文字滚动效果是做不到的
    这里给你一个解决的方法你可以试试:
    写一个类继承JPanel,重写"public void paintComponents(Graphics g)绘制此容器中的每个组件"方法,在该方法中绘制你所写的文字,主要用到的是Graphics 类的drawString方法,public abstract void drawString(String str,
                                    int x,
                                    int y)使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。最左侧字符的基线位于此图形上下文坐标系的 (x, y) 位置处。 
    你也可以绘制背景色,
    例如:绘制红色背景色
    g.setColor(Color.RED);
    g.fillRect(0,0,panel.getWidth(),panel.getHeight())。
    public abstract void fillRect(int x,
                                  int y,
                                  int width,
                                  int height)填充指定的矩形。该矩形左边缘和右边缘分别位于 x 和 x + width - 1。上边缘和下边缘分别位于 y 和 y + height - 1。得到的矩形覆盖 width 像素宽乘以 height 像素高的区域。使用图形上下文的当前颜色填充该矩形。 参数:
    x - 要填充矩形的 x 坐标。
    y - 要填充矩形的 y 坐标。
    width - 要填充矩形的宽度。
    height - 要填充矩形的高度。
    你可以通过线程更改所画字符串的坐标实现滚动
      

  7.   

    大体写了一个小例子,楼主修改一下package demo;import java.awt.Color;
    import java.awt.Font;
    import java.awt.FontMetrics;
    import java.awt.GradientPaint;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Point;
    import javax.swing.JApplet;
    import javax.swing.JPanel;public class DemoForApplet extends JApplet implements Runnable { private int DEFAULT_WIDTH = 1000;
    private int DEFAULT_HEIGHT = 100;
    private PaintPanel mPaintPanel;
    private int x;
    private int y;
    private String strText = "The Second Ticker Message";
    private Thread mThread;
    private Font controlTextFont; public DemoForApplet() {
    super();
    getContentPane().setLayout(null);
    } public void init() {
    x = 0;
    y = 50;
    setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    controlTextFont = new Font("Arial",Font.PLAIN, 20);
    mPaintPanel = new PaintPanel();
    mPaintPanel.setBounds(0, 0, 1000, 100);
    mPaintPanel.setBackground(Color.WHITE);
    getContentPane().add(mPaintPanel);
    mThread = new Thread(this);
    mThread.start();
    } public void run() {
    while (true) {
    x = x + 10;
    if(x>DEFAULT_WIDTH)
    {
    x=0;
    }
    try {
    mThread.sleep(250);
    mPaintPanel.repaint();
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    } // 用于绘制的面板
    class PaintPanel extends JPanel 
    {
    private GradientPaint gpaint;
    private Point point2;
    private Point point1;
    PaintPanel() {
    super(true);
    }
    public void paintComponent(Graphics g) {
    super.paintComponents(g);
    Graphics2D g2d = (Graphics2D) g;
    point1 = new Point(0, 0);
    point2 = new Point(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    gpaint = new GradientPaint(point1, Color.RED, point2, Color.WHITE);
    g2d.setPaint(gpaint);
    g2d.fillRoundRect(0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT, 10, 10);
    g2d.setColor(Color.BLACK);
    g2d.setFont(controlTextFont);
    g2d.drawString(strText, x, y);
    } }
    }
      

  8.   

    噢,那么    private String strText = "<span style='color:red'>The Second Ticker Message</span>";
    因为我得数据是从另外一个页面接收得html 路径!
      

  9.   

    你可以传文本和颜色给DemoForApplet,如果要与页面交互那么就用
    <applet>
    <param name="strText" value="The Second Ticker Message"/>
    <param name="color" value="red"/>
    </applet>
    给applet传参数,然后就可以在applet的init()中通过以下语句获取其值了
    strText= getParameter("strText");
    color= getParameter("color");
    在上面的例子中没有加入滚动方向的设置,及文本部分显示功能
      

  10.   

    13楼,我可能说得还是不明白!
    这样子,我以前恩师和我朋友帮我分别写了一个,
    第一个是我同学写的,只能读取本地连接,而且本地连接放在网页里面还不能运行
    第二个是我老师帮我写的,能读取但是不好操作,以前不能再也免里面运行,
    但是两个在eclipse的applet小程序模块里运行时没有问题的!!
                                  一
    代码结构 :text.html(里面存放着我要读取的文本数据)
    内容:
    <html><head></head><body>
    <span>
    <a style="background-color:#FF0000;" href="http://www.info-vision.com">info-vision.com</a>
    <img src="http://t2.baidu.com/it/u=98406107,2487204983&fm=0&gp=-46.jpg" style="width:18px; height:18px;">
    </span>
    </span>
    </body></html>
                              二
    代码结构 :testa.html(一个用来运行做好的applet的html文件,运行生成好的.class文件)
    内容:
    <HTML>
    <HEAD>
    <TITLE> Write file example </TITLE>
    <applet code="HzjDemo.class", width="1024",height="768">
    </applet>
    </HEAD>
    </HTML>
       三
    就是两个的applet代码!生成。.class文件后,3个文件(text.html,testa.html和.class文件全部方在一个包下面!)
    代码分别如下!
    朋友的
    import java.awt.*;
    import java.applet.*;
    import java.io.*;import javax.swing.JLabel;
    import javax.swing.JPanel;public class HzjDemo extends Applet implements Runnable {

    String str ="";
    //"<html><body  style='background-color: #ff0000'><span style='background-color: #ff0000; font-family: Arial; font-size: 18px'>The Second 11111111111111111111111111111Ticker Message</span></body></html>";
    JLabel j = new JLabel();
    JLabel j2 = new JLabel();
    JPanel p = new JPanel(); Thread t;
    boolean b; public void init() {
    //String FileName="http:"+"//"+"localhost:8888/x/1.html";
    String FileName="c:\\1.html";
    File myFile=new File(FileName);
            if(!myFile.exists())
            { 
                System.err.println("Can't Find " + FileName);
            }        try 
            {
                BufferedReader in = new BufferedReader(new FileReader(myFile));
                String strs;
                while ((strs = in.readLine()) != null) 
                {
                 str+=strs;
                }
                in.close();
            } 
            catch (IOException e) 
            {
                e.getStackTrace();
            }add(j);
    } public void start() 
    {
    t = new Thread(this);
    b = false;
    t.start();
    } public void run() 
    {
    char ch;
    int i = 0; while (true) 
    {
    try 
    {
    i = i + 10;
    repaint();
    Thread.sleep(150);
    j.setText(str);
    j.setLocation(j.getWidth()-i+300, 10);
    if (i > j.getWidth()*2) 
    {
    i = 0;
    }
    } catch (InterruptedException e) 
    {
    } } }}
    老师的:import java.awt.*;
    import java.applet.*;
    import java.io.InputStream;
    import java.net.URL;import javax.swing.JLabel;public class HzjDemo extends Applet implements Runnable {
    /**
     * 
     */
    private static final long serialVersionUID = -3116332527413379348L;
    String content = "";
    JLabel j = new JLabel();
    int i=100;
    Thread t;
    boolean b; public void init() {
    add(j);
    try{
         // java.net.URL url=new URL("http://localhost:8888/x/1.html");
         java.net.URL url=new URL("http://localhost:8888/text/1.html");
         java.net.URLConnection con=url.openConnection();
         con.connect();
         int size=con.getContentLength();
         char[] text=new char[size];
         InputStream str=con.getInputStream();
         for(int i=0;i<size;i++){
          text[i]=(char)str.read();
          //System.out.print(text[i]);
         }
         content=String.valueOf(text);
         str.close();
         System.out.println(content);
    }catch(Exception e){
    e.printStackTrace();
    }
    } public void start() {
    t = new Thread(this);
    b = false;
    t.start();
    } public void run() {
    char ch;
    while (true) {
    try {
    repaint();
    Thread.sleep(100);

    j.setText(content);
    j.setBounds(i-=2, 10,400,100);

    if(i==-100){
    i=100;
    }
    } catch (InterruptedException e) {
    }
    } }}
      

  11.   

    你的意思是说要做成一个标准的applet,只要把指定地址的HTML给它他就能根据你的HTML,Applet直接把相关的文字及样式
    读出并显示?是这个意思?
    如果是的话,你不是说你朋友的代码可以把HTML读出嘛?那你需要把HTML解析,然后将文字及相关样式的属性提取出来,分别赋值给相关的变量应该就可以了吧
      

  12.   

    我现在的问题是可以在eclipse的applet的小模块里面运行,但是 在网页里面加载applet就会出问题啦!
      

  13.   

    没有 错误 提示 就是在 eclipse里面得 applet小程序 运行 就没有问题 
    但是如果用 html 把编译好得 applet得 class在页面上 运行就是出不来 
    比如  <span style="backgournd-color:red;">asdasd</span>在 eclipse里面得 applet小程序运行,就没有问题 显示 就是 asdasd北京 红色得 
    但是在页面 加载 就 还是 输出   <span style="backgournd-color:red;">asdasd</span>