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

AWT/Swing Java Discussion :

[Swing] mauvais affichage sur JPanel


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut [Swing] mauvais affichage sur JPanel
    Bonjour a tous,
    J'ai codé une interface graphique suivant le schéma suivant :
    JGrille : JPanel contenant le graphes d'un signal
    JGraph2D : JPanel contenant une JGrille + legendes
    FenetrePrincipale : JFrame contenant et affichant un tableau de JGraph2D

    Je defini un listener de la souris dans la FenetrePrincipale sur les JGrille de manière a afficher la position du curseur de la souris.
    Mon probleme est que l'affichage se fait correctement lorsque je bouge ma souris mais lorsque cette derniere devient statique, l'affichage disparait!!!

    Je ne vois absolument pas d'ou peux venir ce probleme etant donne qu'avant cette nouvelle implémentation, tout fonctionnait a merveille...

    Merci a tous pour vos réponses!

  2. #2
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Différentes interrogations:
    - Qu'existait-il avant cette nouvelle implémentation?
    - Quel type de listener est-ce?
    - Est-ce le seul listener défini sur ces composants?

  3. #3
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    Implémentation precedentes :
    ---------------------------------------
    Non existances des composants JGrille et JGraph2D. la méthode paint etait vraiment over-surchargée d'ou mon idée de creer des objets differents...
    La fenetrePrincipale contenait uniquement un tableau de JPanel sur lequels on accrochait les listeners!

    Listeners utilisés :
    -----------------------
    J'implémente les interfaces MouseMotionListener et un MouseListener en surchargeant les methodes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void mouseClicked(MouseEvent e) {}
        public void mousePressed(MouseEvent e) {}
        public void mouseReleased(MouseEvent e) {}
        public void mouseEntered(MouseEvent e) {}
        public void mouseExited(MouseEvent e) {}
        public void mouseDragged(MouseEvent e) {}
        public void mouseMoved(MouseEvent e) {}

  4. #4
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    A priori pour le comportement que tu décris, seulement le mouseMoved devrait être utilisé pour afficher les coordonnées de la souris.
    Si les coordonnées s'efface lorsque la souris s'arrête, il faudrait aller voir du côté de la méthode repaint() si jamais tu l'as redéfinie.
    Vérifie que la légende est toujours visible et au premier plan. Peut être qu'un composant (la JGrille peut être) se dessine par dessus, les coordonnées se réécrivent dessus parce que tu bouges la souris, mais dès que tu arrêtes, les coordonnées ne sont pas réécrites.

  5. #5
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    En fait, pour d'autres option je suis obligé de surcharger toutes ces méthodes (zoom, etc...);
    en fait, tu penses que la JGrille est repaint par dessus la legende?
    Je jette un coup d'oeil...

    Je te laisse un bout de code pour que tu comprennes mieux
    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
    public void glisserFFT(int i)
        {
            // On ajoute le listener pour filtrer le signal
            this.graphsFFT[i].getGraphe().addMouseListener(new MouseAdapter()
            {
                // Quand la souris entre dans le panel
                public void mouseEntered(MouseEvent e)
                {
                    setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
                }
     
                // Quand la souris sort du panel
                public void mouseExited(MouseEvent e)
                {
                    repaint();
                    int i = ((JGrille)e.getSource()).getNumVoie();
                    setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                    Graphics g = ((JGrille)e.getSource()).getGraphics();
                    g.setColor(Color.white);
                    g.drawLine(donnees.getDonneesFFT(i).getXFreq(),1,donnees.getDonneesFFT(i).getXFreq(),graphsFFT[i].getHGraph()-2);
                    g.setFont(new Font(g.getFont().getFamily(),Font.BOLD,15));
                    g.drawString(donnees.getDonneesFFT(i).getFreqText(),4,20);
     
                }
     
     
            });
     
            this.graphsFFT[i].getGraphe().addMouseMotionListener(new MouseMotionAdapter()
            {
                // Quand la souris bouge
                public void mouseMoved(MouseEvent e)
                {
                    repaint();
                    int i = ((JGrille)e.getSource()).getNumVoie();
                    Graphics g = ((JGrille)e.getSource()).getGraphics();
                    g.setColor(Color.white);
                    g.drawLine(donnees.getDonneesFFT(i).getXFreq(),1,donnees.getDonneesFFT(i).getXFreq(),graphsFFT[i].getHGraph()-2);
                    g.setFont(new Font(g.getFont().getFamily(),Font.BOLD,15));
                    g.drawString(donnees.getDonneesFFT(i).getFreqText(),4,20);
                    DonneesFFT d = donnees.getDonneesFFT(i);
                    d.setXFreq(e.getX());
                    if(d.getXFreq() == 0) d.setXFreq(1);
                    if(d.getXFreq() == graphsFFT[i].getLGraph() - 1) d.setXFreq(graphsFFT[i].getLGraph() - 2);
                    g.setColor(Color.blue);
                    g.drawLine(d.getXFreq(),1,d.getXFreq(),graphsFFT[i].getHGraph()-2);
                    double freq = ((int)(10.0*d.getXFreq()*donnees.getFreqEch()/(2*(graphsFFT[i].getLGraph()-1))))/10.0;
                    d.setFreqText(freq+" Hz");
                    g.setFont(new Font(g.getFont().getFamily(),Font.BOLD,15));
                    g.drawString(d.getFreqText(),4,20);
                    donnees.setDonneesFFT(d,i);
                }
            });
        }
    merci bcp...

  6. #6
    Membre éclairé Avatar de HebusBreizh
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Tu peux vérifier que la valeur inscrite dans la légende n'est jamais effacée (avec un ValueChangeListener), ce qui nous avancerait plus dans la piste d'une légende "cachée" plutôt que "effacée".

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

Discussions similaires

  1. mauvais affichage sur FIREFOX iso android etc
    Par Invité dans le forum Débuter
    Réponses: 3
    Dernier message: 04/10/2012, 18h13
  2. Réponses: 2
    Dernier message: 19/08/2009, 14h16
  3. Mauvais affichage sur un histogramme
    Par Mloody2000 dans le forum Langage
    Réponses: 5
    Dernier message: 27/08/2008, 19h07
  4. Mauvais affichage sur X-axis
    Par Hanae dans le forum BIRT
    Réponses: 3
    Dernier message: 06/07/2007, 11h13
  5. [Swing]Problème d'affichage sur un JTree
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 19/01/2006, 10h41

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