@Override
  protected void paintClientArea(Graphics graphics) {
    Point point = getLocation();

    graphics.drawImage(image0, point.x, point.y);

    super.paintClientArea(graphics);
  }
 @Override
 public void deleteImage() {
   super.deleteImage();
   if (image0 != null) {
     image0.dispose();
     image0 = null;
   }
 }
 @Override
 public void setBackgroundColor(Color bg) {
   Color oldColor = getBackgroundColor();
   super.setBackgroundColor(bg);
   if (!oldColor.equals(bg)) {
     createImage();
     repaint();
   }
 }
  @Override
  protected void paintClientArea(Graphics graphics) {

    Point point = getLocation();

    if (bgImage != null) graphics.drawImage(bgImage, point.x, point.y);

    super.paintClientArea(graphics);
  }
  @Override
  public void deleteImage() {
    super.deleteImage();
    if (textImage != null) {
      textImage.dispose();
      textImage = null;
    }

    if (iconImage != null) {
      iconImage.dispose();
      iconImage = null;
    }
  }
 @Override
 public void addLayoutListener(LayoutListener listener) {
   super.addLayoutListener(listener);
 }