Swing JFC Java

import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JToolTip;
import javax.swing.SwingUtilities;
import javax.swing.plaf.metal.MetalToolTipUI;
public class Main {
  public static void main(String[] argv) {
    JLabel wonLabel = new JLabel() {
      public JToolTip createToolTip() {
        return new ImageToolTip();
      }
    };
    wonLabel.setToolTipText("asdf");
  }
}
class ImageToolTip extends JToolTip {
  public ImageToolTip() {
    setUI(new ImageToolTipUI());
  }
}
class ImageToolTipUI extends MetalToolTipUI {
  public void paint(Graphics g, JComponent c) {
    FontMetrics metrics = c.getFontMetrics(g.getFont());
    g.setColor(c.getForeground());
    g.drawString(((JToolTip) c).getTipText(), 1, 1);
    g.drawImage(new ImageIcon("yourImage").getImage(), 1, metrics.getHeight(), c);
  }
  public Dimension getPreferredSize(JComponent c) {
    FontMetrics metrics = c.getFontMetrics(c.getFont());
    String tipText = ((JToolTip) c).getTipText();
    if (tipText == null) {
      tipText = "";
    }
    Image image = new ImageIcon("yourImage").getImage();
    int width = SwingUtilities.computeStringWidth(metrics, tipText);
    int height = metrics.getHeight() + image.getHeight(c);
    if (width < image.getWidth(c)) {
      width = image.getWidth(c);
    }
    return new Dimension(width, height);
  }
}