IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

objets non repaints au redimensionnement de ma fenetre


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut objets non repaints au redimensionnement de ma fenetre
    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
     
    			}	
     
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 860
    Points : 22 900
    Points
    22 900
    Billets dans le blog
    51
    Par défaut
    Pourtant tu l'avais toi-même affiché : layout de contenu : java.awt.FlowLayout[hgap=5,vgap=5,align=center], le contenu a un layout par défaut.
    Et donc comme il y a un gestionnaire de mise en page, c'est lui qui prend la main lorsque la fenêtre est redimensionnée.

    Penser a faire contenu.setLayout(null); au début.

  3. #3
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut Merci bouye!
    Merci bouye pour ton intervention pertinente. Tu as raison, j'affichais le "layout" car je pensais que ça pouvait être la cause, mais même sous les yeux, je ne voyais pas l'évidence... (un peu comme quand on relit ses propres fautes d'orthographes sans les voir...)
    Ca fonctionne très bien à présent, et au moins, c'est clair pour la suite.
    Encore merci!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [gcc/ld] comment "zapper" les objets non référéren
    Par jula dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 05/01/2006, 15h15
  2. [POO] balise ou objet non reconnu lors d'un deploiement serveur
    Par benssj5 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/01/2006, 17h26
  3. limiter le redimensionnement d'une fenetre
    Par gaut dans le forum Windows
    Réponses: 3
    Dernier message: 20/12/2004, 11h56
  4. Réponses: 2
    Dernier message: 12/11/2004, 17h34
  5. redimensionnement d'une fenetre DirectX
    Par tibyann dans le forum DirectX
    Réponses: 3
    Dernier message: 11/06/2004, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo