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); } } }
你可以吧一段长的文本放到一个String里,然后不断地截取固定长度的字符串,往后移动,然后显示在Label里面。这个是方法一。
方法二就是用Composite对象,里面放置一个长度大于Comp~对象长度的Label。
然后移动Label。
两个方法都不错,第二个可能文字的移动要平稳一些。
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看看吧