开发者

Java Problem with super.paintComponents(g), it makes a print screen

I'm trying to make a paint in java, with classes and hierarchy. But my paint area isn't getting the background color (defined as white) and when i click it makes a print screen in the jpanel area of drawing. With super.paintComponent(g) the interface appears all right but i only get one point of each time. With super.paintComponents(g) it prints the frame in the jpanel area.

any thoughts about what's happen?

public class MandaDesenhar extends JPanel
{
static int x;
static int y;

private static final long serialVersionUID = 1L;
int i = 0;

public void paintComponent(Graphics g)
{   
    super.paintComponents(g);

    if (Paint4Fun.lista.size() == 0)
        return;

    while (i<Paint4Fun.lista.size())
    {
        FormaPrimitiva forma = Paint4F开发者_如何学Pythonun.lista.get(i);
        forma.desenha(g);
        i++;
    }
}


You should define i locally in your paintComponent method, not outside of it, and initialize it there to 0.

Otherwise you are always only painting the new elements of your list, not the older ones.

Edit: You can write your loop better as a for-loop:

for(int i = 0; i < Paint4Fun.lista.size(); i++) {
   FormaPrimitiva forma = Paint4Fun.lista.get(i);
   forma.desenha(g); 
}

or even more clearly:

for(FormaPrimitiva forma : Paint4Fun.lista) {
    forma.desenha(g);
}

Generally, always declare variables (like the i here) in the smallest possible scope (the method or even the loop, here).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜