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 } }
Partager