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

Affichage des résultats du sondage: Code utile pour deplacer JDialog

Votants
1. Vous ne pouvez pas participer à ce sondage.
  • Utile

    1 100,00%
  • Inutile

    0 0%
  • En faire une API

    0 0%
Sondage à choix multiple
Agents de placement/Fenêtres Java Discussion :

Saccade d'un déplacement de JDialog


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 36
    Par défaut Saccade d'un déplacement de JDialog
    hello à tous,

    je rencontre une saccade lors du deplacememnt de mon JDialog undecorated

    voici le code de deplacement
    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
     
    private void jPanel1MousePressed(java.awt.event.MouseEvent evt) {
     
            pointDepart = new Point(evt.getX(),evt.getY());
     
        }
     
        private void jPanel1MouseReleased(java.awt.event.MouseEvent evt) {
     
            pointDepart = null;
        }
     
        private void jPanel1MouseMoved(java.awt.event.MouseEvent evt) {
     
        }
     
        private void jPanel1MouseDragged(java.awt.event.MouseEvent evt) {
            if (pointDepart == null) {
                pointDepart = new Point(evt.getX(), evt.getY());
              }
     
          else {
     
            int dx = evt.getX() - pointDepart.x;
            int dy = evt.getY() - pointDepart.y;
            int buffer = 300;
            if(dx > buffer || dy > buffer || dx < buffer || dy < buffer){
                this.setLocation(this.getX() + dx ,  this.getY() + dy);
     
                pointDepart.x = evt.getX();
                pointDepart.y = evt.getY();
            }
          }
        }
    pointDepart est une variable globale
    mon jPanel1 est le 1° panel de mon JDialog

    quand je me deplace la fenetre se deplace mais pas aussi vite que ma souris
    j ai tente un buffer a ma sauce
    mais je pense que ce soit la bonne chose
    me mette sur la piste m aiderai bien

  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
    Faites simplement le setLocation lors du mouse Release, ou arrangez vous pour faire le setLocation un nombre maximum de fois par seconde (ça sert à rien de redessiner la fenêtre 500 fois si l'utilisateur l'a déplacée de 500 pixels)

  3. #3
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 36
    Par défaut
    oui c est ce que je faisais au debut
    mais je voulais faire quelque chose de fluide.

    comme quand on clique sur la barre des fenetres (quand elle existe)

    c est plus un probleme d algo que de prog
    si quel qu un a une idee...

  4. #4
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Bonjour,

    Je n'ai pas compris toute la logique de mouseDragged mais avec ces quelques lignes je n'ai aucune saccade:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void jPanel1MouseDragged(java.awt.event.MouseEvent evt) {
    	if (pointDepart != null) {
    		int dx = pointDepart.x - evt.getX();
    		int dy = pointDepart.y - evt.getY();
    		this.setLocation(this.getX() - dx, this.getY() - dy);
    	}
    }

  5. #5
    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
    Tout dépend aussi de la complexité de la fenetre et de la vitesse de travail de paint() dans vos composants

  6. #6
    Membre averti
    Inscrit en
    Novembre 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 36
    Par défaut
    Citation Envoyé par -gma- Voir le message
    Bonjour,

    Je n'ai pas compris toute la logique de mouseDragged mais avec ces quelques lignes je n'ai aucune saccade:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void jPanel1MouseDragged(java.awt.event.MouseEvent evt) {
    	if (pointDepart != null) {
    		int dx = pointDepart.x - evt.getX();
    		int dy = pointDepart.y - evt.getY();
    		this.setLocation(this.getX() - dx, this.getY() - dy);
    	}
    }
    merci c est bien un probleme d algo et calculant le decalage c est plus propre
    nickel pour cette reponse pertinente
    le drag est plus interressant car il suit la souris quand elle bouge
    car je reste en mousepressed
    et mousemoved sur un Jpanel => survole d une zone

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

Discussions similaires

  1. JDialog: empecher le déplacement vertical
    Par dr23fr dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 09/06/2008, 14h02
  2. déplacement d'un label très saccadé
    Par marco62118 dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 13/01/2008, 00h02
  3. Empêcher le déplacement d'un JDialog
    Par alain123 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 31/01/2007, 10h16
  4. Déplacement "automatique" du curseur
    Par Amenofis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 08/01/2003, 18h57
  5. Limiter le déplacement de la souris
    Par el_bouleto dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/11/2002, 23h56

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