begin process at 2010 03 21 20:46:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Applets

 > 

Soucis moussePressed & mousseDragged


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Soucis moussePressed & mousseDragged

jeudi 21 décembre 2006 à 10:27:37 | Soucis moussePressed & mousseDragged

FiReTiTi

Membre Club
Bonjour,

je souhaite utiliser la souris pour gérer les rotations d'un objet dans mon application 3D. Pour cela, j'ai besoin des coordonnées du clic au moment où l'on presse le bouton puis des coordonnés du pointeur quand le bouton est enfoncé.
Mais il y a un souci, voilà l'exemple :

[CODE]
public class Souris3D implements MouseListener, MouseMotionListener, MouseWheelListener
{
private int OldX, OldY ;
...
public void mousePressed(MouseEvent me) // Quand on presse sur le bouton
    {
    OldX = me.getX() ;
    OldY = me.getY() ;
    System.out.println("mousePressed Old = " + OldX + " " + OldY + "-------------------------->>>>>>>>>>>>>>>>>>") ;
    }
...
public void mouseDragged(MouseEvent me) // Mouvement de la souris bouton enfoncé.
    {
    System.out.println("mouseDragged : " + me.getX() + " " + me.getY() + " Old = " + OldX + " " + OldY) ;
    OldX = me.getX() ;
    OldY = me.getY() ;
    }
...
}
[\CODE]

Mais entre les deux fonctions, les valeurs de OldX et OldY sont perdues, voilà l'affichage :
[CODE]
mousePressed Old = 558 439-------------------------->>>>>>>>>>>>>>>>>>
mouseDragged : 558 431 Old = 345 324
mouseDragged : 558 424 Old = 558 431
mouseDragged : 557 422 Old = 558 424
[\CODE]

On voit que dans le méthode moussePress les valeurs sont changées, mais dans la méthode mousseDragged elles sont différentes.

Est ce que quelqu'un sait pourquoi ?
Si oui, comment contourner le souci ?

Merci par avance...
vendredi 22 décembre 2006 à 22:48:51 | Re : Soucis moussePressed & mousseDragged

physio

Bonjour ,

moi juste le code suivant fonctionne :


public class TestSouris extends JFrame {

    private int oldX, oldY;

    public TestSouris() {

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.addMouseListener(new MouseAdapter() {
                            public void mousePressed(MouseEvent e) {

                                        oldX = e.getX();
                                        oldY = e.getY();
                                        System.out.println("mousePressed Old = " + oldX + " " + oldY
                                                                                    + "-------------------------->>>>>>>>>>>>>>>>>>");

            }

        });

        this.addMouseMotionListener(new MouseMotionListener() {

            public void mouseDragged(MouseEvent e) {
                System.out.println("mouseDragged" + e.getX() + " " + e.getY()
                        + " OLD " + oldX + " " + oldY);

                oldX = e.getX();
                oldY = e.getY();

            }

            public void mouseMoved(MouseEvent e) {

            }

        });

    }

    public static void main(String[] args) {

        TestSouris frame = new TestSouris();
        frame.setSize(300, 300);
        frame.setVisible(true);
    }

}

n'as tu pas d'autre endroit de ton code qui modifie les valeurs de oldX et oldY ?
essaye d'executer en mode pas a pas pour voir ou est modifiée ta variable


bonne chance

PH¥§íØ
vendredi 22 décembre 2006 à 23:49:50 | Re : Soucis moussePressed & mousseDragged

FiReTiTi

Membre Club
Bonsoir,

merci pour l'aide, mais :
 - j'ai besoin d'utiliser "public class Souris3D implements MouseListener, MouseMotionListener, MouseWheelListener" et non pas une JFrame.
 - ma classe contient exactement ce que j'ai marqué. Les trois petits points signifient que je n'ai pas marqué les autres fonctions que j'ai été obligé d'implémenter, mais qui sont VIDES.


samedi 23 décembre 2006 à 13:38:20 | Re : Soucis moussePressed & mousseDragged

Twinuts

Membre Club Administrateur CodeS-SourceS
Salut,

tu peux t'inspirer de ce code qui permet de bouger une fenêtre sans forcément passer par la barre de titre :

import java.awt.Frame;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

public class DragWindow extends MouseAdapter implements MouseMotionListener {
    private Frame    frame        = null;
    private int        mousePrevX    = 0;
    private int        mousePrevY    = 0;
    private int        frameX        = 0;
    private int        frameY        = 0;

    public DragWindow(Frame frame){
        this.frame = frame;
    }
   
    public void mousePressed(MouseEvent e) {
        super.mousePressed(e);
        mousePrevX = e.getX();
        mousePrevY = e.getY();
        frameX = 0;
        frameY = 0;
    }

    public void mouseDragged(MouseEvent e) {
        dragged(e.getPoint());
    }

    private void dragged(Point p) {
        int X = p.x;
        int Y = p.y;
        int msgX = 0;
        int msgY = 0;
        msgX =frame.getX();
        msgY = frame.getY();

        if (msgX == 0 && msgY == 0)
            msgX = msgY = 1;

        int moveX = X - mousePrevX; // Negative if move left
        int moveY = Y - mousePrevY; // Negative if move down
        if (moveX == 0 && moveY == 0)
            return;
        mousePrevX = X - moveX;
        mousePrevY = Y - moveY;

        // mouseDragged caused by setLocation() on frame.
        if (frameX == msgX && frameY == msgY) {
            frameX = 0;
            frameY = 0;
            return;
        }

        // '-' would cause wrong direction for movement.
        int newFrameX = msgX + moveX;
        // '-' would cause wrong
        int newFrameY = msgY + moveY;

        frameX = newFrameX;
        frameY = newFrameY;

        frame.setLocation(newFrameX, newFrameY);

    }

    public void mouseMoved(MouseEvent e) {
    }

}


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
mardi 2 janvier 2007 à 15:29:15 | Re : Soucis moussePressed & mousseDragged

FiReTiTi

Membre Club
Bonjour et bonne année. Merci pour la réponse, mais je n'arrive pas à taper "super.moussePressed()", Eclipse affiche une erreur de syntase :(
mardi 2 janvier 2007 à 15:38:36 | Re : Soucis moussePressed & mousseDragged

Twinuts

Membre Club Administrateur CodeS-SourceS
Salut et bonne année à tous(et toutes),

pour faire "super.moussePressed()" il te faut hériter de MouseAdapter alors sérieux prend la classe que je te donne texto limite tu bidouille comme tu peux et de la lu la considère comme un objet fini et autonome dans ton application


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
mercredi 3 janvier 2007 à 11:36:20 | Re : Soucis moussePressed & mousseDragged

FiReTiTi

Membre Club
Réponse acceptée !
Bonjour, je viensde résoudre le problème : il faut déclarer les variables OldX et OldY en static !!! Mais je ne sais pas pourquoi ça marche :(


Cette discussion est classée dans : bouton, code, old, oldx, oldy


Répondre à ce message

Sujets en rapport avec ce message

code JAVA et requete SQL [ par oceane751 ] bonjour! je suis en train de creer un programme permettant de supprimer, mettre à jour, chercher et ajouter des elements d'une base de donner j'ai dej affichage dans un panel en java [ par nthanatos ] je cée une applet avec trois panels. le 1er panel contient un bouton qui doit afficher un panneau de type panel dans le 2ème panelMais cette action ne JInternalFrame - Bouton - Listener [ par PDVV ] Bonjour a tous,Il y a qqch que je ne sais pas faire, et pourtant j'ai cherché!J'ai un bouton sur une JInternalFrame, et je n'arrive pas a exploiter ce Bouton image [ par Appolon ] Bonjour,J'ai une page ASP avec du code JavaScript.J'ai une balise J'ai un menu déroulant qui fait appel à une fonction javascript sur l'évènement onch URGENTISSIME... !!! [ par Bison_Ravi_33 ] salut tout le monde....J'ai un projet à rendre dans 2 semaines...Un projet basé sur les JavaBeansJ'ai deja réalisé mes algorithmes... tout fonctionne boutons [ par Bison_Ravi_33 ] salut tout le monde....J'ai un projet à rendre dans 2 semaines...Un projet basé sur les JavaBeansJ'ai deja réalisé mes algorithmes... tout fonctionne Imprimer [ par kawtar_ch ] Bonjour!!je travaille sur netBeans et je voudrais imprimer une jDialog que j'ai créé, j'ai trouvé le code pour faire ceci, mais le problème est que je code d'un bouton pemetant la vrification de l'existence d'un utilisateur ds la BDD [ par Titim86 ] slt tt le monde,je suis en train de développer une application JEE: j'ai un page web contenant 2 champ de saisie: un mot de passe et un login .[^^sad1 Débugguage d'un code source [ par TiPunK ] Bonjour à tous, Voilà, je commence à développer en java en cours, et nous avons à construire pendant les travaux pratiques un système de vent


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales