从数组中删除元素不会更改图形



在我的应用程序中,我创建了一个数组来控制输出中的标志图像。这工作得很好,但当我从数组中删除一个元素时,图片根本不会改变。

class Flag{
Image FlagImage;
int FlagNum = 0;
public Flag(int FlagNum)  {
    this.FlagNum = FlagNum;
    try{
    FlagImage = ImageIO.read(new File("flag1.png"));
    }catch(Exception e){
    }
}
public void Update() {
}
public void Draw(Graphics g) {
    //Draw Flag
    g.drawImage(FlagImage, ((FlagNum) % 3+1) * 100-100, (int)((FlagNum) / 3) * 100+100, null);
}
}
public class Flags extends JPanel {
/**
 * Creates new form Flags
 */
public Flags(){
    initComponents();
    FlagSet.add(new Flag(1));
    final Timer timer =new Timer(10, new ActionListener(){
        @Override
        public void actionPerformed(final ActionEvent e){
            repaint();
            for (Flag f: FlagSet){
                f.Update();
            }
        }
    });
}
public static ArrayList<Flag> FlagSet = new ArrayList();
@Override
public void paintComponent(Graphics g){
    super.paintComponent(g);
    for (Flag f: FlagSet){
        f.Draw(g);
    }
}

然后我试着添加这样的标志:

flagCounter = 4;
while(flagCounter > -1){
    Flags.FlagSet.add(new Flag(flagCounter));
    flagCounter--;
}

这工作得很好,但我的图像不会改变,如果我把一个Flgas.FlageSet.remove(//Some flag)以后。什么好主意吗?

你好像错过了一个repaint()的电话。

Repaint是发送给绘图组件的信号,告诉它发生了变化,并且需要再次调用paint方法。在这种情况下,由于添加到Flags列表将改变它的绘制方式,因此在完成添加标志之后,您应该简单地调用repaint()

相关内容

  • 没有找到相关文章

最新更新