Aplet w formie galerii z miniaturami, powiększanymi po kliknięciu

0

Musze zrobić programik w formie galerii z miniaturami, które po naciśnięciu się powiększy. Myślałam, żeby zrobić to w mouseClicked ale tam kombinuje i wykombinować nie umiem.. Pomożecie? ;)

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JApplet;
import java.awt.*;
import java.awt.event.*;
public class imidz extends JApplet implements MouseListener
{
	private int x=0, y=0, z=500, j=0;
	Image img1;
	Image img2;

	public void init()
	{
		addMouseListener(this);
		img1=getImage(getDocumentBase(), "ojciec.gif");
		img2=getImage(getDocumentBase(), "kot.gif");
	}
	public void paint (Graphics gDC)
	{
		gDC.drawImage(img1,x,y, this);
		gDC.drawImage(img2,z,j, this);
	}
	public void mouseClicked(MouseEvent e)
	{

	}
	public void mousePressed(MouseEvent evt) {}
	public void mouseExited(MouseEvent evt) {}
	public void mouseEntered(MouseEvent evt) {}
	public void mouseReleased(MouseEvent evt) {}
}
0

Co oznacza zwrot "się powiększy"? Zostanie wyświetlony inny plik graficzny, czy też wyświetlana wcześniej miniaturka zostanie przeskalowana.

0

Dokładnie tak. Ten sam obraz zostanie przeskalowany. Przepraszam za ten niedokładny zwrot.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1