Bonsoir,

j'essaie de réalise r un composant que je puisse déplacer dans un jpanel. je voudrai qu'il ait des poignés pour pouvoir l'agrandir ou le réduire à volonté.

je suis parti d'un jpanel.

Le problème de mon code est que je perds le Jpanel si je déplace trop vite la souris (c'est identique pour la réduction de la taille du jpanel).


mon code :
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
 
 
 
public class Test {
 
	/**
         * @param args
         */
	public static void main(String[] args) {
 
 
		final JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JPanel panel = new JPanel();
		frame.getContentPane().add(panel);
		frame.setSize(300, 300);
 
 
		 panelDe = new Panel();
 
		panel.add(panelDe);
		panelDe.setBackground(Color.RED);
 
		panelDe.setName("rodolphe");
 
 
	panelDe.addMouseMotionListener(new MouseMotionListener() {
 
		@Override
		public void mouseMoved(MouseEvent e) {
			xDep = e.getX();
			yDep = e.getY();
 
		}
 
		@Override
		public void mouseDragged(MouseEvent e) {
			x = panelDe.getX();
			 y = panelDe.getY();
			 lg = panelDe.getWidth()-3;
			 lr = panelDe.getHeight()-3;
 
 
			 if (e.getX()> 3 && e.getX()<lg){
				 if (e.getY()>3 && e.getY()<lr){
					 panelDe.setLocation(e.getX()+x-panelDe.getWidth()/2, e.getY()+y-panelDe.getHeight()/2);
					 frame.repaint();
				 }
			 }
 
			 if (e.getX()> lg){
				 if (e.getX()>xDep){
				 panelDe.setSize(panelDe.getWidth()+1, panelDe.getHeight());
				 }
				 if (e.getX()<xDep){
					 panelDe.setSize(panelDe.getWidth()-1, panelDe.getHeight());
 
					 }
			 }
		}
	});
		frame.setVisible(true);
 
 
	}
	static Panel panelDe;
	private static int xDep ;
	private static int yDep ;
	static int x ;
	static int y ;
	static int lg ;
	static int lr ;
 
}

et mon JPanel

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
 
 
@SuppressWarnings("serial")
public class Panel extends JPanel{
 
	public Panel() {
		setBackground(Color.RED);
		setPreferredSize(new Dimension(50, 20));
	}
 
 
 
 
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
 
 
		int width = getWidth();
	    int height = getHeight();
 
	    g.setColor(ColorBackGround);
	    g.fillRect(0, 0, width+x, height);
 
	    g.setColor(Color.BLACK);
		g.drawLine(0, 10, 0, 20);
		g.drawLine(1, 10, 1, 20);
		g.drawLine(2, 10, 2, 20);
	  }
 
 
 
	public void setBackground(Color color){
 
		ColorBackGround = color;
 
	}
 
 
 
 
	private Color ColorBackGround ;
	private int x ;
 
 
}
merci de votre aide.