作者tsaiminghan (nahgnimiast)
看板java
标题[问题] Applet的paint函式重绘问题。
时间Fri Sep 10 18:15:49 2010
我开启Applet的视窗後,将Applet视窗移出萤幕范围外,
再拉回来,整个Applet画面被清空,画的图形都不见了。
看debug的输出,会看到System.out.println这行只输
出一次paint而己。
如果把super.paint(g)这行拿掉,可以看到paint很多次,
但是图形有很多残影且背景没有重绘。
我想知道应该怎麽做才会正确的重绘,我想这个问题应
该很简单,但是书上没写到,麻烦请各位高手指点一下。
程式码如下
public void paint(Graphics g)
{
super.paint(g);
System.out.println("paint\n");
for(int i=0; i<10; ++i)
{
g.drawLine(0, 0, 25, 10*i);
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.121.131.205
1F:→ ericinttu:找看看画面更新的指令 (applet不熟) 09/10 18:20
更新有repaint可以用,但是我觉得很奇怪的地方是
绘图的时候,应该会呼叫到paint这个函式,所以拉出画面外,再拉回来时
,应该会再呼叫到paint,但是不知道为什麽,好像只有super.paint(g)有
作用,它後面的部分都没作用?这是我的想法,不知道正不正确。
2F:→ tkcn:版本多少? 有没有使用到 AWT component? 09/10 18:50
有用AWT,但应该没用到component吧?
共improt下面两个package
import javax.swing.JApplet;
import java.awt.Graphics;
我灌得Java版本
jdk-6u21-windows-i586
用的IDE环境
eclipse-jee-helios-win32.zip
※ 编辑: tsaiminghan 来自: 59.121.131.205 (09/10 19:04)
※ 编辑: tsaiminghan 来自: 59.121.131.205 (09/10 19:05)
3F:→ tkcn:把视窗拉出萤幕外再回来不repaint是正常的,但也不会被清空才 09/10 19:25
4F:→ tkcn:是。我拿你的 code 试了一下,没有同样的问题。 09/10 19:26
所以这和windows API的运作方法不一样?如果有发生被覆住的区块,在恢复时,
windows API会自动呼叫paint函式来重绘
我刚才重试了一下,情况如你所说,没有整个重绘,不过拉来拉去时,
有时好像会发生,不知道是不是我电脑有问题。
※ 编辑: tsaiminghan 来自: 59.121.131.205 (09/10 20:26)
5F:推 tomap41017:之前写期末专题时也遇到原波的问题,我也没解决 09/15 00:12
6F:→ TonyQ:理论上应该是会有作用,我猜你当时的 paint 跟你想的不一样 09/15 08:51