Sometime when we play with images...i mean here a lot of images, like we let user choose an image from 500 images in a JFrame and all images show at the same time without any scrollbar, it can give user a little problem if the image too small. So, how can user make a good choice. This give me some idea to built my own image tooltip. This is a simple tooltip. It will enlarge image when someone hover mouse cursor on it.Image below is a result from program below.
Before you compile and execute it, you should download all images below. After that place them at same location with this java source file.
Love_Music_by_jovincent.jpg
Leafs_1_by_NerghaL.jpg
Hancock-1611.jpg
matrix.jpg
********************************************************************
COMPLETE SOURCE CODE FOR : ImageToolTip.java
********************************************************************
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import java.awt.GridLayout;
import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
public class ImageToolTip
{
public static void main(String[]args)
{
PanelImage imageA=new PanelImage("matrix.jpg");
PanelImage imageB=new PanelImage("Hancock-1611.jpg");
PanelImage imageC=new PanelImage("Leafs_1_by_NerghaL.jpg");
PanelImage imageD=new PanelImage("Love_Music_by_jovincent.jpg");
JFrame myMainWindow=new JFrame("Image Tool Tip");
myMainWindow.setResizable(false);
myMainWindow.getContentPane().setLayout(new GridLayout(2,2));
myMainWindow.getContentPane().add(imageA);
myMainWindow.getContentPane().add(imageB);
myMainWindow.getContentPane().add(imageC);
myMainWindow.getContentPane().add(imageD);
myMainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myMainWindow.setSize(100,100);
myMainWindow.setLocationRelativeTo(null);
myMainWindow.setVisible(true);
}
}
class PanelImage extends JPanel implements MouseListener
{
ImageIcon temp;
ImageMagnifier im;
public PanelImage(String a)
{
addMouseListener(this);
temp=new ImageIcon(a);
}
public void paint(Graphics g)
{
super.paint(g);
g.drawImage(temp.getImage(),0,0,getSize().width,getSize().height,this);
}
public void mouseClicked(MouseEvent event)
{
}
public void mouseEntered(MouseEvent event)
{
im=new ImageMagnifier(temp,getSize().width,getSize().height,event.getXOnScreen(),event.getYOnScreen());
}
public void mouseExited(MouseEvent event)
{
im.dispose();
}
public void mousePressed(MouseEvent event)
{
}
public void mouseReleased(MouseEvent event)
{
}
}
class ImageMagnifier extends JFrame
{
ImageIcon temp;
public ImageMagnifier(ImageIcon imageFile,int width,int height,int x,int y)
{
setUndecorated(true);
temp=imageFile;
setLocation(x,y);
setSize(width*9,height*9);
setVisible(true);
}
public void paint(Graphics g)
{
super.paint(g);
g.drawImage(temp.getImage(),0,0,getSize().width,getSize().height,this);
}
}
********************************************************************
JUST COMPILE AND EXECUTE IT
********************************************************************