1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| public class ImagePanel extends JPanel {
private BufferedImage image;
private float zoom;
private int imageWidth;
private int imageHeight;
public ImagePanel(BufferedImage image) {
this.image=image;
this.zoom=1;
updateImageSize();
}
public void setZoom(float zoom) {
this.zoom = zoom;
updateImageSize();
revalidate();
}
private void updateImageSize() {
imageWidth=(int) (image.getWidth()*zoom);
imageHeight=(int) (image.getHeight()*zoom);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(imageWidth, imageHeight);
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(image, 0, 0, imageWidth, imageHeight, this);
}
public static void main(String[] args) {
try {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
final ImagePanel imagePanel = new ImagePanel(ImageIO.read(new File("C:/Documents and Settings/Joël/Mes documents/Mes images/avatar/suricate.carre.jpg")));
panel.add(new JScrollPane(imagePanel), BorderLayout.CENTER);
final JSlider slider = new JSlider(0, 100, 0);
panel.add(slider, BorderLayout.SOUTH);
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
imagePanel.setZoom(1+slider.getValue()/10f);
}
});
frame.setContentPane(panel);
frame.setSize(200,200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
} |
Partager