作者TonyQ (骨头)
看板java
标题Re: [问题] 如何手动触发隐藏的awt元件呼叫paint()?
时间Sun Mar 2 02:18:43 2008
※ 引述《eliang ()》之铭言:
: ◆ From: 220.132.133.199
: 推 TonyQ:没有container应该画出来也看不到吧 03/01 20:08
: → eliang:我的目的不是让它看得到,只要让它呼叫到就好了 03/01 20:17
: 推 TonyQ:你可以写canvas.paint(canvas.getGraphics()); 03/01 20:27
: → eliang:谢谢你,我试了,但在canvas隐藏时, 03/01 21:38
: → eliang:getGraphics()回传的是null 03/01 21:40
: 推 TonyQ:你不是只想呼叫? 只想呼叫这样就够啦XD 03/01 23:26
: → eliang:我希望能执行paint()的程式码,因为JME(一个 java game 03/02 01:17
: → eliang:engine)把起始化程序放在Canvas子类别的paint()里,在第一次 03/02 01:20
: → eliang:paint()才做初始化,而我希望初始化在秀到萤幕上前就先做好 03/02 01:22
: → eliang:,所以才想看看有没有方法可以提早触发paint()的呼叫 03/02 01:24
让我举个有趣的例子给你看
1.你的目的不是看得到,而是呼叫到,
丢null给paint的确是可以呼叫到的,
除非你呼叫的定义跟我呼叫的定义不一样。XD
────────────────────────────────
for example
class MyCanvas extends Canvas{
public void paint(Graphics g){
/*要执行的程式码*/
System.out.println("hello");
}
}
MyCanvas canvas = new MyCanvas();
canvas.paint(canvas.getGraphics());
// result :
hello
────────────────────────────────
如果说你的目的中包含有绘图相关,会被Graphics产生的
NullPointer阻碍的话,
你还有一个下下策可以用,就是写一个空的Graphics,
然後再丢给canvas的paint。
还是希望你先认知清楚问题啦,有时候问题往往都不是人想的那样。:)
--
I am a person, and I am always thinking .
Thinking in love , Thinking in life ,
Thinking in why , Thinking in worth.
I can't believe any of what ,
I am just thinking then thinking ,
but worst of all , most of mine is thinking not actioning...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.232.4.20