bonjour,

je crée une fenêtre, qui contient un jpanel comme contentPane, nommé : contenu.

Quand je clique sur ce contentPane, j'ajoute sur ce dernier 5 rectangles rouge, que je peux déplacer.
Le background de "contenu" est vert.

Cela fonctionne mais........ Si je redimensionne ma fenètre, les objets semblent toujours exister, semblent être repaints, mais disparaissent de l'affichage de "contenu", qui devient totalement vert, comme si les objets rectangles rouge, n'existaient plus...

Pourtant mes rectangles sont bien des enfants de "contenu", qui lui apparait au redimensionnement???

J'ai du louper quelque chose, mais je n'arrive pas à le voir....

Merci pour vos remarques....

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
 
/*
		 * ICI ON LANCE LE PROGRAMME ET ON CONSTRUIT LA FENETRE DE DEMARRAGE 
		 * 
		 */
 
public class Main_17 {
 
 
 
	public static void main(String[] args) {
 
	 MyWindow_17  mafenetre = new MyWindow_17("Mes petits carrés rouge");
 
 
 
	}
 
 
}
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
mport java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
 
/*
 * ICI ON DEFINIT LE CONSTRUCTEUR DE FENETRE
 */
 
			@SuppressWarnings("serial")
	public class MyWindow_17 extends JFrame implements MouseListener{
 
			//---MES VARIABLES---
			public Composant_17[] comp  = new Composant_17[5];
			 JPanel contenu = new  JPanel() ;
			 static int x0, y0;
			 int i = 0;
 
 
			 // constructeur de la fenetre
			 public MyWindow_17 (String string)   { 	
						super ();
						this.setTitle(string);
						this.isAlwaysOnTop();		
						this.setSize(500, 500);
						this.setLocationRelativeTo(null);
						this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
						this.setVisible(true);
						contenu.setBackground(Color.green);
						contenu.addMouseListener(this);
						contenu.setName("panneau_contenu");
						this.setContentPane(contenu);
						System.out.println("layout de contenu : " + contenu.getLayout());
				 }
 
 
			@Override
			public void mouseClicked(MouseEvent e) {
				System.out.println("coucou au début du mouse event sur contenu" );
				if (i<5) {
						System.out.println("dans le clic sur contenu, i = " + i);
						x0 = e.getX();
						y0 = e.getY();
					//	System.out.println("dans le mouse event, x et y : " + e.getX() + "  " + e.getY());
						comp[i] = new Composant_17();
						comp[i].setLocation(x0, y0);
 
						contenu .add( comp[i]) ;
						System.out.println(comp[i]);
						contenu.repaint();
						System.out.println("parent du composant : " + comp[i].getParent());
				}
				i = i+1;
			}
 
			@Override
			public void mousePressed(MouseEvent e) {
				System.out.println("clic sur contenu");
			}
			@Override
			public void mouseReleased(MouseEvent e) {
			}
			@Override
			public void mouseEntered(MouseEvent e) {
			}
			@Override
			public void mouseExited(MouseEvent e) {
			}		
 
}

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
mport java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
 
import javax.swing.JComponent;
 
 
/*
 * ICI ON DEFINIT LE COMPOSANT A AFFICHER
 */
 
 
public  class Composant_17 extends JComponent implements MouseListener, MouseMotionListener{
	private static final long serialVersionUID = 1L;
 
	Color couleur;
	int x0,y0;
 
		public  Composant_17 () {
			System.out.println("dans Composant_17, je passe dans le contructeur");
			this.setSize(50, 80);
			this.couleur = Color.red;
			this.addMouseListener(this);
			this.addMouseMotionListener(this);
		}
 
 
		//---ré-écriture de "paintComponent" appelée à chaque création d'objet---
		@Override
		protected void paintComponent(Graphics g) {
					super.paintComponent(g);
					g.setColor(couleur);
					g.fillRect(0,0,getWidth(), getHeight());
					System.out.println("on repaint le composant!");
			}
 
 
 
			// listener de composants
			@Override
			public void mouseClicked(MouseEvent e) {
				System.out.println("click sur carré rouge");
			}
			@Override
			public void mousePressed(MouseEvent e) {
				x0 = e.getX();
				y0 = e.getY();
				System.out.println("appui initial sur composant en " + x0 + "   " + y0);
			}
			@Override
			public void mouseReleased(MouseEvent e) {
			}
			@Override
			public void mouseEntered(MouseEvent e) {
				this.couleur = Color.white;
				this.repaint();
			}
				@Override
			public void mouseExited(MouseEvent e) {
				this.couleur = Color.BLUE;
				this.repaint();
			}
 
			@Override
			public void mouseDragged(MouseEvent e) {
				System.out.println("on draggede en : " + e.getX() + "   " + e.getY());
				int x = this.getX()+e.getX()-x0;
				int y = this.getY()+e.getY()-y0;
				this.setLocation(x, y);		
			}
 
			@Override
			public void mouseMoved(MouseEvent e) {
				// TODO Auto-generated method stub
 
			}	
 
}