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 :

rafraichissement de JLabel


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    524
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 524
    Par défaut rafraichissement de JLabel
    Bonjour,

    J'ai un JPanel avec un BorderLayout. Dans la partie Center, je met un JPanel, dans la partie South, je met un JPanel avec 2 JLabel.
    Je veux que quand je déplace la souris sur le JPanel de la partie Center, les coordonnées s'affichent dans les 2 JLabel.

    J'ai donc mis un écouteur sur le JPanel de la partie Center:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    this.addMouseMotionListener(new MouseMotionListener() {          
                public void mouseMoved(MouseEvent me) {
                    infos.getLongitude().setText(""+me.getX());
                    infos.getLatitude().setText(""+me.getY());
                    infos.revalidate();
                    System.out.println(me.getX() + " - " + me.getY()); // pour test
                }
     
                public void mousePressed(MouseEvent me) {}
                public void mouseDragged(MouseEvent me) {}
            });
    infos est le JPanel qui contient les 2 JLabel.
    Mais le rafraichissement ne se fait pas.
    J'ai testé les méthodes validate(), revalidate(), repaint(), validate()+repaint(), rien n'y fait ...

    Avez-vous une idée du problème ?

    Merci,
    Nico

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    ce code fonctionne tres bien ici:
    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
    import java.awt.Dimension;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import java.lang.reflect.InvocationTargetException;
     
    import javax.swing.BoxLayout;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
     
     
    public class JFrameTest extends JFrame {
     
    	private class Info extends JPanel{
    		JLabel longitude;
    		JLabel latitude;
    		public Info(){
    			longitude=new JLabel("...");
    			latitude=new JLabel("...");
    			setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
    			this.add(longitude);
    			this.add(latitude);
    		}
    		public JLabel getLongitude() {
    			return longitude;
    		}
    		public void setLongitude(JLabel longitude) {
    			this.longitude = longitude;
    		}
    		public JLabel getLatitude() {
    			return latitude;
    		}
    		public void setLatitude(JLabel latitude) {
    			this.latitude = latitude;
    		}
    	}
    	private Info infos;
    	public JFrameTest(){
    		this.getContentPane().add(infos=new Info());
    		this.addMouseMotionListener(new MouseMotionListener() {
                public void mouseMoved(MouseEvent me) {
                    infos.getLongitude().setText(""+me.getX());
                    infos.getLatitude().setText(""+me.getY());
    //                infos.revalidate();
                    System.out.println(me.getX() + " - " + me.getY()); // pour test
                }
     
                public void mousePressed(MouseEvent me) {}
                public void mouseDragged(MouseEvent me) {}
            });
    		this.setSize(new Dimension(500,200));
    		this.setVisible(true);
     
    	}
     
    	public static void main (String[] argv) throws InterruptedException, InvocationTargetException{
    		SwingUtilities.invokeAndWait(new Runnable() {
     
    			@Override
    			public void run() {
    				new JFrameTest();
     
    			}
    		});
    	}
    }
    Le revalidate n'est même pas nécessaire. Es-tu sur de mettre à jour le bon objet infos et les bons label?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    524
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 524
    Par défaut
    Si j'affiche dans la console la valeurs des labels :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void mouseMoved(MouseEvent me) {
                    infos.getLongitude().setText(""+me.getX());              
                    infos.getLatitude().setText(""+me.getY());
                    System.out.println(" -- " + infos.getLongitude().getText() + " - " + infos.getLatitude().getText());
                    System.out.println(me.getX() + " - " + me.getY());
                }
    il m'affiche bien les bonnes valeurs, donc c'est vraiment un problème de rafraichissement.

    Nico

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    ou tu travaille sur un autre 'infos'. Le code que j'ai filé fait exactement ce que tu veux faire, sans aucun soucis. T'as probablement instancié deux fois ton info, et c'est le info non visible que tu modifie.

Discussions similaires

  1. Problème fct getprix() suivie d'un rafraichissement de JLabel
    Par PaulPacheco dans le forum Composants
    Réponses: 4
    Dernier message: 05/06/2008, 10h32
  2. Réponses: 2
    Dernier message: 04/06/2008, 16h27
  3. Rafraichissement Immédiat d'un JLabel
    Par TiLs1 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 16/04/2007, 15h08
  4. [JLabel] probleme de rafraichissement
    Par zorm dans le forum Composants
    Réponses: 3
    Dernier message: 14/11/2005, 06h30
  5. [thread] Rafraichissement JLabel
    Par astyanax34 dans le forum Composants
    Réponses: 14
    Dernier message: 24/06/2004, 15h44

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