Java tutorial
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); } }