java applet paint method trouble

2019-05-11 00:14发布

In code I am calling repaint() method from init() method but Output is not as per I expect. I called repaint() method 10 times but It called paint() only once(See Screenshot of O/P). Am I making any mistake. please help me. Thanks

code

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

1条回答
祖国的老花朵
2楼-- · 2019-05-11 01:03

Please understand that you do not have complete control over if or when paint(...) get's called, and that repaint() calls are only a suggestion to the JVM to paint. If too many repaint() requests come in and they stack up as yours are doing, then they will be combined. For more details on this, please have a look at this article, Painting in AWT and Swing.

Regardless, even if your code worked, it still wouldn't cause any visible changes for the user of your code, since all the x and y changes and painting would be done almost instantaneously. Perhaps you really want to use a Swing Timer? Perhaps you want to re-code this in Swing and not AWT as well.

查看更多
登录 后发表回答