1

我正在尝试使用类和层次结构在 java 中进行绘制。但是我的绘画区域没有获得背景颜色(定义为白色),当我单击它时,它会在绘图的 jpanel 区域中生成一个打印屏幕。使用 super.paintComponent(g) 界面看起来不错,但我每次只得到一个点。使用 super.paintComponents(g) 它在 jpanel 区域中打印框架。

关于发生了什么的任何想法?

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 = Paint4Fun.lista.get(i);
        forma.desenha(g);
        i++;
    }
}
4

1 回答 1

3

您应该i在方法中本地定义paintComponent,而不是在方法之外,并将其初始化为0.

否则,您总是只绘制列表中的新元素,而不是旧元素。

编辑: 您可以将循环更好地编写为 for 循环:

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

甚至更清楚:

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

通常,总是i在尽可能小的范围(方法甚至循环,这里)中声明变量(如这里)。

于 2011-06-13T22:46:10.673 回答