package org.lateralgm.components.visual; import java.awt.Dimension; import java.awt.Graphics; import java.awt.image.BufferedImage; import javax.swing.JComponent; import javax.swing.JToolTip; import javax.swing.plaf.ToolTipUI; public class ImageToolTip extends JToolTip { private static final long serialVersionUID = 1L; public ImageToolTip(AbstractImagePreview ii) { setUI(new ImageToolTipUI(ii)); } public ImageToolTip(final BufferedImage img) { this(new AbstractImagePreview() { private static final long serialVersionUID = 1L; public BufferedImage getImage() { return img; } }); } public class ImageToolTipUI extends ToolTipUI { private AbstractImagePreview aip; public ImageToolTipUI(AbstractImagePreview aip) { this.aip = aip; } @Override public void paint(Graphics g, JComponent c) { super.paint(g,c); BufferedImage img = aip.getImage(); if (img != null) g.drawImage(img,0,0,null); } @Override public Dimension getPreferredSize(JComponent c) { BufferedImage img = aip.getImage(); if (img == null) return new Dimension(16,16); return new Dimension(Math.max(img.getWidth(),16),Math.max(img.getHeight(),16)); } } }