Masz przykładowy kod, zawiera kilka magicznych stałych związanych z wymiarami obrazków, których używałem do testowania.
import javax.swing.*;
import javax.imageio.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.util.*;
import java.io.*;
public class Galeria extends JApplet
{
private ArrayList<BufferedImage> thumbnails = new ArrayList<BufferedImage>();
private ArrayList<Rectangle> rectangles = new ArrayList<Rectangle>();
private boolean firstPainting = true;
private Image img;
public void init()
{
setLayout(new BorderLayout(3,3));
BufferedImage img1 = null;
BufferedImage img2 = null;
try
{
img1 = ImageIO.read(new File("Delete.gif"));
img2 = ImageIO.read(new File("Import.gif"));
}
catch(Exception e)
{
System.out.println(e);
}
for(int i=0;i<6;i++)
{
thumbnails.add(img1);
thumbnails.add(img2);
}
add(new Miniaturki(),BorderLayout.WEST);
add(new Obraz(),BorderLayout.CENTER);
repaint();
}
class Miniaturki extends JPanel implements MouseListener
{
public Miniaturki()
{
setPreferredSize(new Dimension(63,179));
setBackground(Color.WHITE);
setBorder(BorderFactory.createLineBorder(new Color(0,135,189)));
addMouseListener(this);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int x = 5;
int y = 5;
for(int i=0;i<thumbnails.size();i++)
{
g.drawImage(thumbnails.get(i),x,y,null);
g.drawRect(x,y,24,24);
if(firstPainting)
{
rectangles.add(new Rectangle(x,y,24,24));
}
if(i % 2 == 0)
{
x+=29;
}
else
{
x = 5;
y+=29;
}
}
}
public void mouseClicked(MouseEvent e)
{
int x = e.getX();
int y = e.getY();
for(int i=0;i<rectangles.size();i++)
{
Rectangle r = rectangles.get(i);
if(r.contains(x,y))
{
img = thumbnails.get(i).getScaledInstance(179,179,Image.SCALE_FAST);
Galeria.this.repaint();
return;
}
}
}
public void mousePressed(MouseEvent evt) {}
public void mouseExited(MouseEvent evt) {}
public void mouseEntered(MouseEvent evt) {}
public void mouseReleased(MouseEvent evt) {}
}
class Obraz extends JPanel
{
public Obraz()
{
setPreferredSize(new Dimension(179,179));
setBackground(Color.WHITE);
setBorder(BorderFactory.createLineBorder(new Color(0,135,189)));
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if(img != null)
{
g.drawImage(img,0,0,null);
}
}
}
}