package org.rr.commons.swing.tooltip; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Insets; import java.awt.RenderingHints; import javax.swing.BorderFactory; import javax.swing.JToolTip; import javax.swing.UIManager; /** * A tool tip capable of displaying an image. * * @author Collin Fagan */ public class JImageToolTip extends JToolTip { private static final long serialVersionUID = 2284228909791458845L; private int width; private int height; private Image image; /** * @param image * - image to display * @param scale * - scale factor */ public JImageToolTip(Image image, double scale) { super(); this.width = (int) (image.getWidth(null) * scale); this.height = (int) (image.getHeight(null) * scale); this.image = image; setPreferredSize(new Dimension(width, height)); setBorder(BorderFactory.createLineBorder(UIManager.getColor("PopupMenu.border"))); } /** * * @param image */ public JImageToolTip(Image image) { this(image, 1); } /** * @see javax.swing.JComponent#paint(java.awt.Graphics) */ @Override public void paint(Graphics g) { Graphics2D g2d = ((Graphics2D) g); g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); g2d.setColor(getBackground()); g2d.fillRect(0, 0, width, height); paintBorder(g2d); Insets insets = getInsets(); g2d.drawImage(image, insets.left, insets.top, width - (insets.left + insets.right), height - (insets.top + insets.bottom), null); } }