Ciao,
vagamente anche io sto lavorando a una cosa simile. Una cosa che ti potrei consigliare di fare è visualizzare nel tuo applet base la tua immagine in bassa risoluzione, attaccare a un bottone un MouseListener in modo che quando ci clicki sopra si apre un altro frame dove tu possa vedere l'immagine in hd.
ti posto un codice che piu o meno fa questo.
codice:
package mixevent;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import com.sun.j3d.utils.behaviors.mouse.MouseBehavior.*;
public class myClick2 extends JFrame {
JFrame f;
JPanel p;
JPanel p2;
JPanel p3;
JButton fotoB;
JPanel fotoP;
JLabel fotoL;
final int width=700;
final int height=700;
BufferedImage black;
public static void main(String[] args){
myClick2 ogg = new myClick2();
}
public myClick2(){
f = new JFrame();
f.setTitle("titolo del frame");
p = new JPanel();
JButton b = new JButton("click");
b.addMouseListener(new MyMouseListener() );
p.add(b, BorderLayout.NORTH);
p.setSize(width, f.getHeight()*1/5);
f.add(p, BorderLayout.NORTH);
f.setBackground(Color.LIGHT_GRAY);
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
p2 = new JPanel();
p2.setSize(f.getWidth(), f.getHeight()*3/5);
f.add(p2,BorderLayout.CENTER);
p3= new JPanel();
p3.setSize(f.getWidth(), f.getHeight()*1/5);
f.add(p3, BorderLayout.SOUTH);
f.setSize(width, height);
f.setVisible(true);
}
public class MyMouseListener extends MouseAdapter{
public void mouseClicked(MouseEvent me){
try {
black = ImageIO.read(new File("black.jpg"));
} catch (IOException ex) {
System.err.print(ex);
}
// Create new (blank) image of required (scaled) size
BufferedImage scaledImage = new BufferedImage( black.getWidth(),black.getHeight(), BufferedImage.TYPE_INT_RGB);
// Paint scaled version of image to new image
Graphics2D graphics2D = scaledImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(black, 0, 0, p2.getWidth(), p2.getHeight(), null);
// clean up
graphics2D.dispose();
JButton campo1= new JButton("campo1");
p3.add(campo1, BorderLayout.CENTER);
Graphics graf = p2.getGraphics();
Icon x = new ImageIcon(scaledImage);
x.paintIcon(p2,graf, 0, 0);
fotoL = new JLabel();
fotoL.setIcon(x);
p2.add(fotoL);
}
}
}