作者ibmoldtwo (BMJ)
看板java
标题Re: [问题] Applet
时间Fri May 15 00:47:06 2009
※ 引述《H45 (!H45)》之铭言:
: ※ 引述《ibmoldtwo (BMJ)》之铭言:
: : 标题: [问题] Applet
: : 时间: Wed May 13 22:16:33 2009
: : 这是我在练习Applet的时候出现的问题。
: : 同一支程式两台电脑执行结果有出入。
: : 我整理了一下PO在论坛上,
: : http://www.javaworld.com.tw/jute/post/view?bid=29&id=258133&sty=1&tpg=1&age=0
: : --
: : ◆ From: 124.8.225.81
: : 推 H45:因为重绘时调用了你的程式码,所以会打印那些字串 05/14 01:33
: : → ibmoldtwo:paint()方法不是只有在init()後执行一次吗?why还会重绘 05/14 17:53
: http://java.sun.com/products/jfc/tsc/articles/painting/
: 系统触发重绘通常有以下原因:
: 1. 第一次显示在萤幕上
: 2. 改变大小
: 3. 因受损必须修复
: : 推 H45:不好回答,请先找资料 (Google: 什麽时候窗口会重绘) 05/14 18:43
Regardless of how a paint request is triggered,
the AWT uses a "callback" mechanism for painting,
and this mechanism is the same for both heavyweight and lightweight components.
我举一个例子
import java.applet.Applet;
import java.awt.*;
public class TestDemo extends Applet{
StringBuffer str=new StringBuffer();
int c;
String s;
public void paint(Graphics g) {
callmsg("ss");
callnum(String.valueOf(3));
g.drawString(s+str.toString(),50,50);
}
void callmsg(String msg){
str.append(msg);
}
void callnum(String x){
s=x;
}
}
执行结果
3ssss //在拉动或缩小Applet视窗时应该3也会被打印,但只有ss会持续被打印,
//让我觉得只有callmsg("ss")被callback??!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.8.228.160
1F:→ sbrhsieh:The mechanism is not exactly the same for HW/LW comp. 05/15 00:48
2F:推 TonyQ:你在说什麽 , 按照你写的demo , 3就算有被打印也不会增加啊. 05/15 00:49
3F:推 TonyQ:ss会从两个变四个是因为有append 05/15 00:55
4F:→ ibmoldtwo:S大的这句不太懂,我会再想想。thx! 05/15 01:16
5F:→ ibmoldtwo:我误很大,感谢T大的纠正。 05/15 01:18