如题, 用SWT实现 动态Label.谢谢.

解决方案 »

  1.   

    对,就用Label。关键是里面的字你要处理一下,在一个Timer里面,不管地改Label的Text了。
    你可以吧一段长的文本放到一个String里,然后不断地截取固定长度的字符串,往后移动,然后显示在Label里面。这个是方法一。
    方法二就是用Composite对象,里面放置一个长度大于Comp~对象长度的Label。
    然后移动Label。
    两个方法都不错,第二个可能文字的移动要平稳一些。
      

  2.   

    package csdn.oct;
     
    import java.awt.Frame;
    import java.awt.Label;
    import java.awt.TextField;
    import java.io.*;
    import java.util.*;
    import java.net.*;import javax.swing.JFrame;
    import javax.swing.JTextPane;public class Demo 
    {
    String[] getStr(String s,int length){
    String newstr = s;//length is the lable's lenght
    String[] slist = new String[length];
    if(length>s.length()){
    for(int i=0;i<length-s.length();i++){
    newstr +=" ";
    }
    //System.out.println(newstr+"@");
    slist[0] = newstr;
    for(int i=1;i<length;i++){
    slist[i] = slist[i-1].substring(1)+slist[i-1].charAt(0);
    System.out.println(slist[i]);
    }
    }
    return slist;
    }
     
      public static void main(String args[]) throws InterruptedException
      { 
      int totallength=23;//要滚动的字符串+后面的空格的长度 必须大于字符串的长度
      String lablestr="I love this game!!!";//要滚动的字符串
      Frame j = new Frame();
      Label l = new Label(lablestr);
      j.add(l);j.setVisible(true);j.pack();
      Demo d = new Demo();
      String[] s = d.getStr(lablestr,totallength);
      while(true){
      for(int i = 0; i < s.length; i++){
      l.setText(s[i]);
      Thread.sleep(100);
      }
      }
      }
      
    }
    //随便写了下  lz看看吧