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 :

problem de mouseDragged (clignotement)


Sujet :

AWT/Swing Java

  1. #1
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut problem de mouseDragged (clignotement)
    Bonjour,


    j'ai un probleme de mouseDragged.

    le but est qu'une ligne vertical se dessine. Cette ligne doit commencer au moment ou on enfonce le bouton de la souri, puis quand on deplace la souri voir le ligne grandir en suivant la souri. puis quand on relache le bouton la ligne est tracé.

    Or dans mon cas quand je deplace la souri, la ligne "clignote" et du coup elle est pas forcement tracé quand je relache la souri.

    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
    chart.addMouseMotionListener(new MouseMotionListener() {
     
                @Override
                public void mouseDragged(MouseEvent e) {
                    xMov = e.getX();
                    yMov = e.getY();
                    boolMov = true;
                    repaint();
                    // boolMov = false;
     
                }
     
                @Override
                public void mouseMoved(MouseEvent e) {
                    // TODO Auto-generated method stub
     
                }
     
            });
     
     
    protected void paintChildren(final Graphics g) {
                    super.paintChildren(g);
                    try {
     
                        ChartDataView dataView = getDataView(1);
                        JCDefaultDataSource dataSource = (JCDefaultDataSource) dataView.getDataSource();
                        double[] x = dataSource.getXSeries(0);
                        double[] hi = dataSource.getYSeries(0);
                        double[] lo = dataSource.getYSeries(1);
     
                        SwtUtilities.runSyncOrAsync(new Runnable() {
                            public void run() {
                                if (!table.isDisposed()) {
                                    points = table.getCellSelection();
                                }
     
                                model = (DefaultConfidenceTableModel) table.getModel();
                            }
                        });
     
                        for (int i = 0; i < x.length; i++) {
     
                            Point phi = dataView.dataCoordToCoord(x[i], hi[i]);
                            Point plo = dataView.dataCoordToCoord(x[i], lo[i]);
     
                            g.drawLine(phi.x - 2, phi.y, phi.x + 2, phi.y);
                            g.drawLine(plo.x - 2, plo.y, plo.x + 2, plo.y);
     
                            for (int j = 0; (points != null) && (j < points.length); j++) {
     
                                if ((i > 0) && (model != null)
                                        && (x[i] == model.getTime(points[j].y - 1)) && !boolMov) {
                                    g.setColor(Color.red);
                                    g.drawLine(phi.x - 2, phi.y, phi.x + 2, phi.y);
                                    g.drawLine(plo.x - 2, plo.y, plo.x + 2, plo.y);
                                    g.drawLine(phi.x, phi.y, plo.x, plo.y);
                                    g.setColor(Color.black);
                                    break;
                                }
                                else if ((i > 0) && (model != null)
                                        && (x[i] == model.getTime(points[j].y - 1)) && boolMov) {
                                    g.setColor(Color.green);
                                    g.drawLine(phi.x - 2, yMov, phi.x + 2, yMov);
                                    g.drawLine(plo.x - 2, plo.y, plo.x + 2, plo.y);
                                    g.drawLine(phi.x, yMov, plo.x, plo.y);
                                    g.setColor(Color.black);
     
                                }
                            }
                        }
     
                        model = null;
                    }
                    catch (Exception e) {
                        log.warn(e, e);
                    }
                }

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Je pense que c'est parce que tu redessines tout à chaque fois.

    Il existe plusieurs combines pour empecher ça. Celle que j'utilise est d'exploiter le ZOrder : je dispose un panneau de base, celui qui ne change pas et sur lequel doit se faire le tracé, au fond, tandis que je place un panneau transparent, sur lequel je dessine la ligne, au dessus.

    Lorsque la ligne change, je fais un repaint() juste du tableau au dessus, et la mécanique swing se débrouille bien : aucun clignotement ne se voit.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    Merci pour ta réponse...

    N'aurai tu pas un exemple de code car je n'ai encore jamais codé ce type de chose...

    Merci d'avance .

  4. #4
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Comment disposer les composants en couche ou en niveaux ?

    Et aussi au niveau du javadoc de Container à setComponentZOrder.

    Si tu y arrives pas avec ça, hésites pas à poser d'autres questions.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  5. #5
    Membre actif Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Points : 209
    Points
    209
    Par défaut
    Merci pour tes réponses gifftan,

    Mais je me suis débrouillé autrement.

    En fait au lieu de modifier l'element graphique directement, je modifie les données qui sont lié à l'element. Ainsi on utilise qu'une fois le paint au lieu de deux fois ce qui evite les pobleme.

Discussions similaires

  1. [A-03] Probleme affichage clignotant pénible
    Par smilingdreamer dans le forum IHM
    Réponses: 2
    Dernier message: 14/10/2008, 17h03
  2. [win32]Probleme de clignotement
    Par krakoss dans le forum Windows
    Réponses: 7
    Dernier message: 02/08/2007, 16h40
  3. Probleme d'affichage de mes pages web ,j'aperçois un leger clignotement en IE
    Par babouba dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/07/2007, 21h27
  4. Réponses: 1
    Dernier message: 24/01/2007, 09h09
  5. probleme avec un Timage clignotant
    Par alex01pernot dans le forum Delphi
    Réponses: 4
    Dernier message: 21/08/2006, 21h43

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