谁能帮我解释一下这段代码?到底applet中的字幕是如何实现滚动的呢?谢谢! 注: listing 5 以下的代码无用贴错了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for( ; ; ) 是无限循环,线程休息250毫秒后对msg长度进行判断,并且自加1,相应的位置也会变化,如果到头进行一个break,也就是回滚依次类推,最终实现滚动~我的理解是这样的 其实程序一直是在坐标的(50,30)处开始显示此字符串. g.drawString(msg, 50, 30); //开始坐标没有改变 字符串为: " A Simple Moving Banner." ch = msg.charAt(0); // 获取字符串的第一个字符 msg = msg.substring(1, msg.length()); //从第二个字符开始截取子串,并赋给msg msg += ch; // 将开始获取的第一个字符连接到上一步截取子串的末尾. 在线程休息250毫秒后,调用repaint(); 在(50,30)处显示新的字符串!! A Simple Moving Banner. Simple Moving Banner.A Simple Moving Banner.A imple Moving Banner.A S mple Moving Banner.A Si ple Moving Banner.A Sim le Moving Banner.A Simp e Moving Banner.A Simpl Moving Banner.A Simple Moving Banner.A Simple ....................... 请注意空格. 还是不理解 线成休息250ms后 字符串还是 A Simple Moving Banner.截取之后 还是 A Simple Moving Banner.位置还是没有改变啊 如何出现的错位呢 char ch; // Display banner for( ; ; ) { try { repaint();//刷新打印字符串 Thread.sleep(250); ch = msg.charAt(0);把字符串msg中的第一个字符付给ch msg = msg.substring(1, msg.length());//把msg中的第一个字符去掉 msg += ch;//再把去掉的字符加到串尾 //执行repaint()在屏幕打印字符串msg,依次循环,字符总是由第一位移到串尾,然后打印一次,看起来就动画了。 if(stopFlag) break; } catch(InterruptedException e) {} } 你运行了这个程序吧??? 绝对变了,你可以先写个程序验证一下是否截取了字符串。 public class TestStr{ public static void main(String[] args) { char ch; String msg = "A Simple Moving Banner."; for (;;) { ch = msg.charAt(0); msg = msg.substring(1, msg.length()); msg += ch; System.out.println(msg); } }} 你自己看一下运行结果便清楚了,在线等你。 这是一个死循环,你可以在运行以后按Ctrl+C,终止程序的运行看结果。 小小聊天系统 帮忙看看 PreparedStatement的问题 HashSet的内容如何排序? 真诚求教广告平台开发的两个问题! notifyAll之后??? 关于Applet与servlet通讯问题,高手请进,在线等! 请问如何做一个像金山快译那样的浮动工具条,而不显示Frame! 一个简单的错误提示,不知道啥意思。 请教高手一个问题 关于AES加密解密的问题 看java.util的api,那写抽象类啊,接口啊,不知道设计的人是怎样设计的,那些应该设计成抽象类,那些又应该设计成接口呢? 哪位朋友对transaction比较有经验,有几个问题想请教一下
依次类推,最终实现滚动~
我的理解是这样的
g.drawString(msg, 50, 30); //开始坐标没有改变
字符串为: " A Simple Moving Banner."
ch = msg.charAt(0); // 获取字符串的第一个字符 msg = msg.substring(1, msg.length()); //从第二个字符开始截取子串,并赋给msg msg += ch; // 将开始获取的第一个字符连接到上一步截取子串的末尾.
在线程休息250毫秒后,调用repaint(); 在(50,30)处显示新的字符串!! A Simple Moving Banner.
Simple Moving Banner.A
Simple Moving Banner.A
imple Moving Banner.A S
mple Moving Banner.A Si
ple Moving Banner.A Sim
le Moving Banner.A Simp
e Moving Banner.A Simpl
Moving Banner.A Simple
Moving Banner.A Simple
....................... 请注意空格.
线成休息250ms后 字符串还是
A Simple Moving Banner.
截取之后 还是
A Simple Moving Banner.
位置还是没有改变啊
如何出现的错位呢
for( ; ; ) {
try {
repaint();//刷新打印字符串
Thread.sleep(250);
ch = msg.charAt(0);把字符串msg中的第一个字符付给ch
msg = msg.substring(1, msg.length());//把msg中的第一个字符去掉
msg += ch;//再把去掉的字符加到串尾
//执行repaint()在屏幕打印字符串msg,依次循环,字符总是由第一位移到串尾,然后打印一次,看起来就动画了。
if(stopFlag)
break;
} catch(InterruptedException e) {}
}
绝对变了,你可以先写个程序验证一下是否截取了字符串。 public class TestStr
{
public static void main(String[] args)
{
char ch;
String msg = "A Simple Moving Banner.";
for (;;)
{
ch = msg.charAt(0);
msg = msg.substring(1, msg.length());
msg += ch;
System.out.println(msg);
}
}
} 你自己看一下运行结果便清楚了,在线等你。