2012-11-06 33 views
3

在代碼中,我打電話repaint()方法從init()方法,但輸出不符合我的預期。 我叫repaint()方法10次,但它只調用paint()一次(見O/P的屏幕截圖)。 我是否犯了錯誤。請幫幫我。 感謝java小應用程序繪製方法故障

代碼

import java.awt.*; 
import java.applet.Applet; 
/* 
    <applet code="test" height=300 width=300> 
    </applet> 
*/ 
public class test extends Applet 
{ 
    int x,y; 
    public void init() 
    { 
     x=5; 
     y=10; 
     for(int i=1;i<10;i++) 
     { 
      System.out.println("From init "+i); 
      x+=(i*2);         
      y+=(i*3); 
      repaint();  
     }     
    } 
    public void paint(Graphics g) 
    { 
     System.out.println("Paint"); 
     g.drawLine(50,50,x,y); 
    } 
} 

Output

回答

3

請理解,你不必完全控制是否或何時漆(...)得到的調用,並repaint()電話只是一個建議JVM進行繪製。如果有太多的repaint()請求進來,它們會像你一樣堆積起來,那麼它們將被合併。欲瞭解更多詳情,請看這篇文章,Painting in AWT and Swing。無論如何,即使你的代碼工作,它仍然不會導致你的代碼的用戶有任何可見的變化,因爲所有的x和y的變化和繪畫幾乎是瞬間完成的。也許你真的想使用Swing Timer?也許你想在Swing中重新編寫這個代碼,而不是AWT。

+0

感謝您的指導。 – mcacorner

+0

@ReferenceNotFound:不客氣,祝您好運! –