我有一个 A 类,它扩展了 JPanel 并覆盖了paintComponent 方法。现在我有另一个 B 类,它创建 A 类的对象。现在如何从 B 调用 A 的更新方法?一种仅更新图形且不从头开始绘制的方法。
即使当我调用 JLabel(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);