01.
import java.awt.event.*;
02.
import java.awt.*;
03.
import javax.swing.*;
04.
05.
public
class
Zoom
extends
JFrame {
06.
mapPanel map =
new
mapPanel(
"usa.gif"
);
07.
08.
public
Zoom()
09.
{
10.
11.
addWindowListener(
new
WindowAdapter()
12.
{
public
void windowClosing(WindowEvent ev)
13.
{dispose();
14.
System.
exit
(0);}});
15.
setBounds(10,10,700,400);
16.
getContentPane().setLayout(null);
17.
getContentPane().add(map);
18.
setVisible(true);
19.
20.
}
21.
public
class
mapPanel
extends
JPanel
22.
{
23.
Image map;
24.
double mw,mh;
25.
double zw,zh;
26.
double mx,my;
27.
double zf=1,tx=0,ty=0;
28.
29.
public
mapPanel(String name)
30.
{
31.
setBounds(50,50,200,150);
32.
setBackground(Color.white);
33.
map = getToolkit().createImage(name);
34.
MediaTracker tracker =
new
MediaTracker(this);
35.
tracker.addImage(map,0);
36.
try {tracker.waitForID(0);}
37.
catch (InterruptedException e){}
38.
mw = map.getWidth(null);
39.
mh = map.getHeight(null);
40.
zw = 200;
41.
zh = 150;
42.
mx = mw/2;
43.
my = mh/2;
44.
45.
addMouseListener(
new
MouseAdapter()
46.
{
47.
public
void mousePressed(MouseEvent m)
48.
{
49.
zf = zf + 0.025;
50.
double sw = zw / mw;
51.
double sh = zh / mh;
52.
double sx = m.getX() / sw;
53.
double sy = m.getY() / sh;
54.
tx = mw/2 - (sx-tx);
55.
ty = mh/2 - (sy-ty);
56.
repaint();
57.
}
58.
});
59.
}
60.
public
void paintComponent(Graphics g)
61.
{
62.
super.paintComponent(g);
63.
Graphics2D g2 = (Graphics2D)g;
64.
g2.scale(zf*zw/mw,zf*zh/mh);
65.
g2.translate(tx/zf,ty/zf);
66.
g2.drawImage(map,0,0,null);
67.
g2.dispose();
68.
}
69.
}
70.
public
static
void main(String[]args)
71.
{
72.
new
Zoom ();
73.
}