java 板


LINE

※ 引述《artin (让我备上吧﹒orz...)》之铭言: : 各位大大,大家好,我是java新手… : 如果有人问过了,对不起,我一定会马上回来d掉的....>< 先说声抱歉.... : 我想要把一行字,造成在画面上移动的样子 : 那我的想法是,每次更新印出的位置,然後再repaint()一次 : 我的程式码如下 : import java.applet.Applet; : import java.awt.*; : import java.awt.event.*; : import java.lang.*; : /* : <applet : code = slide.class : width=600 : height=600> : </applet> : */ : public class slide extends Applet implements ActionListene : { : Button button1; : int i=60; : String Sa = "hello java"; : public void init() : { : button1 = new Button("click me"); : add(button1); : button1.addActionListener(this); : } : public void paint(Graphics g) : { : g.drawString(Sa,i,100); : System.out.println("CALL paint()"); : } : public void actionPerformed(ActionEvent e) : { : if(e.getSource() == button1) : { : while(i<160) : { : ++i; : repaint(); : System.out.println(i); : } : } : } : } : 那我想,当按下button後,应该会印出 : CALL paint() : 61 : CALL paint() : 62 : CALL paint() : . : . : CALL paint() : 160 : 可是,实际上却出现 : 61 : 62 : . : . : . : 160 : CALL paint() : 那这和我原本希望的不一样,为什麽,它会在for loop的最後一次才会 : 呼叫paint()这个method呢? : 因为我想了一阵子,也没看过书上提过… : 所以才po上来,请教各位大大 : 谢谢.... 中文 http://www.javaworld.com.tw/jute/post/view ?bid=5&id=33130&tpg=1&ppg=1&sty=1&age=0#33130 英文 http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html 总之因为 Swing Update UI 的动作以及 Event Handler 都是在 Event-Dispatching Thread 里做 所以你呼叫的repaint()都是排程在actionPerformed Event-Dispatching Thread的状态 actionPerformed()--->repaint()---->repaint()--->repaint()--->....... 所以actionPerformed执行完才会执行repaint() Event-Dispatching Thread好像会把多余的动作省略 所以只会执行一次repaint(); 你可以试试在actionPerformed里加入更花时间的动作 你会发现UI都没回应了,因为 Update UI 的动作都要等 actionPerformed执行完才会执行 正确的作法是将花时间的动作用new Thread来做, 如此actionPerformed可以立即执行完毕 并继续下一个在 Event-Dispatching Thread 的 task 换言之,所有花时间的动作都应该使用new Thread 避免在 Event Handler(Event-Dispatching Thread)来做 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.111.79.32
1F:推 artin:原来是这样,谢谢大大,我再多去了解一下thread,感谢..T_T 05/31 23:29







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP