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

Agents de placement/Fenêtres Java Discussion :

Problème de rafraichissement


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Problème de rafraichissement
    Bonjour, et oui, encore et toujours un problème de rafraichissement '^^
    Bref, dans ma JFrame, j'ai 3 JButtons, un qui ne sert à rien pour l'instant ( pas encore implémenté), un qui ajoute un panel à la fenêtre et un qui en enlève.

    Or, quand je clique sur le bouton pour ajouter un panel, la vue ne se rafraichit pas, j'ai pourtant testé les méthodes validate et revalidate mais rien à faire '^^

    Voici le 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
    75
    76
    77
    78
    79
    public class NiveauGrisVueEnsemble implements Observer 
    {
    	private NiveauGrisController ngc;
    	private NiveauGrisModel ngm;
    	private JFrame ngf;
    	private JScrollPane sp;
    	private JPanel container ;
    	private JButton addNiveauGris, deleteNiveauGris, calculerNiveauGris ;
    	private ArrayList<NiveauGrisPanel> panels ;
     
    	public NiveauGrisVueEnsemble(NiveauGrisController ngc, NiveauGrisModel ngm) 
    	{
    		this.ngc = ngc ;
    		this.ngm = ngm ;
    		ngm.addObserver(this);
     
    		panels = new ArrayList<NiveauGrisPanel>() ;
     
    		ngf = new JFrame("Calcul du niveau de gris") ;
    		ngf.setSize(500,200) ;
    		ngf.setLocationRelativeTo(null) ;
    		ngf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
     
    		container = new JPanel() ;
     
    		addNiveauGris = new JButton("+") ;
    		addNiveauGris.addActionListener(new ActionListener() {
     
    			@Override
    			public void actionPerformed(ActionEvent e) 
    			{
    				panels.add(new NiveauGrisPanel()) ;
     
    				container.removeAll() ;
    				ngf.removeAll() ;
     
    				for ( NiveauGrisPanel ngp : panels)
    				{
    					container.add(ngp) ;
    				}
     
    				container.add(deleteNiveauGris) ;
    				container.add(addNiveauGris) ;
    				container.add(calculerNiveauGris) ;
     
    				container.validate() ;
    				container.repaint() ;
     
    				sp.add(container) ;
    				sp.revalidate() ;
    				sp.repaint() ;
     
    				ngf.getContentPane().add(sp) ;
    				ngf.getContentPane().validate() ;
    				ngf.getContentPane().repaint() ;
    			}
    		}) ;
    		addNiveauGris.setToolTipText("Ajouter un niveau de gris") ;
    		deleteNiveauGris = new JButton("-") ;
    		deleteNiveauGris.setToolTipText("Enlever un niveau de gris") ;
    		calculerNiveauGris = new JButton("Calculer les niveaux de gris") ;
     
    		container.setLayout(new FlowLayout(FlowLayout.CENTER)) ;
    		container.add(deleteNiveauGris) ;
    		container.add(addNiveauGris) ;
    		container.add(calculerNiveauGris) ;
     
    		sp = new JScrollPane(container) ;
    		ngf.getContentPane().add(sp) ;
    		ngf.setVisible(true) ;	
    	}
     
     
     
    	public void update(Observable o, Object arg)
    	{
     
    	}
    }
    Donc, j'ai le JPanel container qui contient les boutons plus les panels à rajouter, un JScrollPane, si ça dépasse de la fenêtre, qui contient ce panel et le contentPane de la fenêtre qui contient le JScrollPane.
    Quand je clique sur + ( le JButton addNiveauGris), la fenetre se freeze.
    Voilà, j'espère avoir de l'aide ^^

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur d'études J2EE
    Inscrit en
    Avril 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur d'études J2EE

    Informations forums :
    Inscription : Avril 2009
    Messages : 82
    Points : 99
    Points
    99
    Par défaut
    Et as-tu essayé un "repaint" ?


  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonjour, bah je vais tester, mais, repaint c'est pas pour actualiser l'affichage graphique ( et validate actualiser les composants) ?

    Edit: non, ça ne marche pas '^^ ( j'ai rajouté dans le code les repaint )

    Bon j'ai trouvé la solution, dans actionPerformed :
    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
     
    public void actionPerformed(ActionEvent e) 
    {
    	panels.add(new NiveauGrisPanel()) ;
     
    	ngf.remove(sp);
    	container.removeAll() ;
     
     
    	for ( NiveauGrisPanel ngp : panels)
    	{
    		container.add(ngp) ;
    	}
     
    	container.add(deleteNiveauGris) ;
    	container.add(addNiveauGris) ;
    	container.add(calculerNiveauGris) ;
     
    	sp = new JScrollPane(container) ;
     
    	ngf.getContentPane().add(sp);
    	ngf.getContentPane().validate() ;
    }
    C'était le JScrollPane le fautif '^^, donc si on change les composants dans un JScrollPane, soit on le réinstantie soit on utilise la méthode setViewportView(Component view) mais la deuxième méthode marche une fois sur deux '^^
    J'espère que ce sera utile pour d'autres personnes qui ont le même problème

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    La méthode add ne sert à rien pour les JScrollPane.

    Il faut soit passer le composant en paramètre du constructeur du JScrollPane ou utiliser la méthode setViewportView...
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonsoir, oui, en effet, j'ai vu ça, à mes dépends '^^

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Page non rafraîchie bonsoir ^^
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

Discussions similaires

  1. [MFC] Problème de rafraichissement,
    Par pykoon dans le forum MFC
    Réponses: 1
    Dernier message: 27/04/2005, 07h21
  2. Problème de rafraichissement.
    Par beyo dans le forum ASP
    Réponses: 5
    Dernier message: 18/03/2005, 16h27
  3. [SWING] Problème de rafraichissement
    Par david71 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 24/05/2004, 15h38
  4. [JTree]problème de rafraichissement
    Par peppena dans le forum Composants
    Réponses: 9
    Dernier message: 20/01/2004, 14h06
  5. Toujours un problème de rafraichissement de DBGrid
    Par tripper.dim dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/12/2002, 13h15

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