Java 调用扩展JPanel的类的更新

Java 调用扩展JPanel的类的更新,java,swing,graphics,paint,updates,Java,Swing,Graphics,Paint,Updates,我有一个类,它扩展了JPanel并重写了paintComponent方法。现在我有另一个类B,它创建了类A的对象。现在如何从B调用A的更新方法?一种只更新图形而不从开始绘制的方法 即使当我调用JLabel(class A对象)的update(Graphics g)方法时,它也从新对象中绘制,而不保留旧对象 类A的代码段: class MyLabel extends JLabel { int[] x,y; int total; MyLabel(ImageIcon i) { super(i

我有一个类,它扩展了JPanel并重写了paintComponent方法。现在我有另一个类B,它创建了类A的对象。现在如何从B调用A的更新方法?一种只更新图形而不从开始绘制的方法

即使当我调用JLabel(class A对象)的update(Graphics g)方法时,它也从新对象中绘制,而不保留旧对象

类A的代码段:

class MyLabel extends JLabel 
{
int[] x,y;
int total;
MyLabel(ImageIcon i)
{
    super(i);
    total=0;
}

@Override 
public void update(Graphics g)
{
    super.update(g);
}

@Override
protected void paintComponent(Graphics g)
{
    super.paintComponent(g);
    if(total!=0)
    {
        g.setColor(Color.RED);
        g.drawPolygon(x, y, total);
    }

}

public void setPoints(int xx[], int yy[], int tt)
{
    total = tt;
    x = new int[tt];
    y = new int[tt];
    System.arraycopy(xx, 0, x, 0, tt);
    System.arraycopy(yy, 0, y, 0, tt);
}
}
这是B类的代码片段

sf.map_label.setPoints(x,y,total);
sf.map_label.update(sf.map_label.getGraphics());
sf.map_label.setVisible(false);
sf.map_label.setVisible(true);

myAObject.update()
?我真的不明白你被困在哪里了。如果你有一个对对象a的引用,你只需在这个引用上调用a方法。请不要让我们猜测所有这些。请努力提出一个明确的问题。记住在AWT事件调度线程上调用它。您是否在询问是否有一种方法可以在程序不清除所有内容并重新绘制所有内容的情况下重新绘制,而只重新绘制已更改的部分?即使在调用update(图g)时也是如此方法JLabel它从新对象中提取,不保留旧对象。