首页 > 解决方案 > 如何循环打印形状?

问题描述

我正在尝试循环打印形状,但是当我运行程序时没有任何显示。我正在使用我之前制作的自定义类中的形状。我使用鼠标单击来获取鼠标的每一端(在不同的部分),这是有效的。

@Override 
public void paintComponent(Graphics g){
    super.paintComponent(g);
    for (int i = 0; i<howMany;i++){
        if (shapes[i] instanceof Line){ 
            Line l = (Line) shapes[i];
            g.drawLine((int)l.start.getX(),(int) l.start.getY(),(int) l.end.getX(),(int) l.end.getY());
            repaint();
        }
    }
}

标签: javaswingpaintcomponentrepaint

解决方案


删除重绘请求并仔细检查是否shapes为空并且shapes[i]实际上是Line

public void paintComponent(Graphics g){
    super.paintComponent(g);
    for (int i = 0; i<howMany;i++){
        if (shapes[i] instanceof Line){ 
            Line l = (Line) shapes[i];
            g.drawLine((int)l.start.getX(),(int) l.start.getY(),(int) l.end.getX(),(int) l.end.getY());
           // repaint(); remove that 
        }
    }
}

推荐阅读