Re: [問題] Applet
※ 引述《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
→
05/15 00:48, , 1F
05/15 00:48, 1F
推
05/15 00:49, , 2F
05/15 00:49, 2F
推
05/15 00:55, , 3F
05/15 00:55, 3F
→
05/15 01:16, , 4F
05/15 01:16, 4F
→
05/15 01:18, , 5F
05/15 01:18, 5F
討論串 (同標題文章)