Re: [問題] Applet

看板java作者 (BMJ)時間16年前 (2009/05/15 00:47), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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
The mechanism is not exactly the same for HW/LW comp.
05/15 00:48, 1F

05/15 00:49, , 2F
你在說什麼 , 按照你寫的demo , 3就算有被打印也不會增加啊.
05/15 00:49, 2F

05/15 00:55, , 3F
ss會從兩個變四個是因為有append
05/15 00:55, 3F

05/15 01:16, , 4F
S大的這句不太懂,我會再想想。thx!
05/15 01:16, 4F

05/15 01:18, , 5F
我誤很大,感謝T大的糾正。
05/15 01:18, 5F
文章代碼(AID): #1A34iB-0 (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
0
1
完整討論串 (本文為第 2 之 2 篇):
問題
2
5
問題
0
1
文章代碼(AID): #1A34iB-0 (java)