Bonjour ,

J'ai une class "extends JLabel" , qui contien une imageIcon .
Je voudrais appliquer des zoom : voici mon code ( au départ , j'avais un objet image et le zoom fonctionné mais là , j'ai changé par un JLabel , vu que j'avais d'autres problemes techniques )

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
 
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
class JImagePanel extends JLabel{
	/**
         * 
         */
 
	//private  MediaTracker tracker;
	public MainFenetre action ; 
	private Image img;
	private Dimension imgSize,iniSize;
	private int zoom = 0 ;
	private int	MouseX;
	private int	MouseY;
	public int transX=0;
	public int transY=0;
	public  JLabel lblMap = new JLabel() ; 
    public  ImageIcon icon ;
 
	public JImagePanel(String file){
 
	//	tracker=new MediaTracker(this);
 
//img=Toolkit.getDefaultToolkit().getImage(file);
 icon = new ImageIcon(file);
 lblMap.setIcon(icon);
 
 lblMap.setSize (icon.getIconWidth(),icon.getIconHeight());
 
 
 lblMap.setLayout (null);
 this.add(lblMap);
 
  //   tracker.addImage(img, 0);
 
 
 
		addMouseListener(new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent e) {
				MouseX = e.getX();
				MouseY = e.getY();
			}
		});
 
		addMouseMotionListener(new MouseMotionAdapter() {
			@Override
			public void mouseDragged(MouseEvent e) {
 
				transX += e.getX()-MouseX;
				transY += e.getY()-MouseY;
				MouseX = e.getX();
				MouseY = e.getY();
 
				//System.err.println("Translate : "+transX+", "+transY);
				for (Component comp : getComponents()) {
 
	                comp.setLocation(transX, transY);
 
 
	            }
 
	            repaint();
	        }
 
 
 
		});
 
 
		try{
		//	tracker.waitForAll();
		}
		catch(Exception ie){}
		imgSize=iniSize=new Dimension(icon.getIconWidth(),icon.getIconHeight());
 
	}
 
 
 
	public Dimension getPreferredSize(){
		return new Dimension(imgSize);
	}
 
	public void paintComponent(Graphics g){
		super.paintComponent(g);
 
		if(this.getWidth()<=iniSize.width) {
			imgSize=iniSize; 
		}
 
		//g.drawImage(this.img, (getWidth()-imgSize.width)/2+transX, (getHeight()-imgSize.height)/2+transY, imgSize.width,imgSize.height,this);
	}
	public void zoomIn(){
		int x=10*imgSize.width/100; 
		int y=10*imgSize.height/100;
		imgSize=new Dimension(imgSize.width+x,imgSize.height+y); 
		if(imgSize.width>iniSize.width){
			setSize(imgSize);
			getParent().doLayout();
			System.out.println(x + "," + y + imgSize);
 
		}
		//setZoom(zoom+10);
		repaint();
	}
	public void zoomOut(){
		int x=10*imgSize.width/100;
		int y=10*imgSize.height/100;
		imgSize=new Dimension(imgSize.width-x,imgSize.height-y);
		if(getWidth()>iniSize.width)
		{
			setSize(imgSize);
			getParent().doLayout();
 
		}
		setZoom(zoom-10);
		repaint();
	}
 
	public int getZoom() {
		return zoom;
	}
 
	public void setZoom(int zoom) {
		this.zoom = zoom;
	}
public void addObjet(JComponent object)
{
	this.lblMap.add(object);
	repaint();
}
public int translateGauche(int dx)
{
	 int xMap = lblMap.getX();
	 int yMap = lblMap.getY();
 
	lblMap.setLocation(xMap+dx, yMap);
	return xMap ;
}
public int translateDroite(int dx)
{
	 int xMap = lblMap.getX();
	 int yMap = lblMap.getY();
	lblMap.setLocation(xMap-dx, yMap);
	return xMap;
}
public int translateHaut(int dy)
{ 
	int xMap = lblMap.getX();
	int yMap = lblMap.getY();
 
	lblMap.setLocation(xMap, yMap+dy);
	return yMap;
}
public int translateBas(int dy)
{
	int xMap = lblMap.getX();
	int yMap = lblMap.getY();
 
	lblMap.setLocation(xMap, yMap-dy);
	return yMap;
}
 
 
 
}
Comment réadapter le code pour avoir un Zoom qui fonctionne sur la JLabel ?
Merci .