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

Interfaces Graphiques en Java Discussion :

Probleme : décalage du curseur (voir image)


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 115
    Par défaut Probleme : décalage du curseur (voir image)
    Bonjour,

    Je suis entrain de développer un logiciel de traitement d'image, mais je rencontre un soucis qui me fait rager.... j'obtiens un décalage entre là où est mon curseur et là où le tracé s'effectue, j'ai regarder au moins 20fois mon projet je vois rien qui cloche.

    Je ne sais même pas quel partie du code je pourrais poster car je vois rien qui cloche donc pour vous faire une idée du soucis voilà un screenshot :
    screenshot du probleme

    et ici les sources (avec un jar à l'intérieur):
    source du projet

    Dessin.java :
    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
     
    	//tout les points du dessin
    	private ArrayList<Point> point = new ArrayList<Point>();
     
    	public Dessin(Feuille p){
    		parent = p;
    		width = parent.getWidth();
    		height = parent.getHeight();
    		pRealTime = parent.getParent().getPRealTime();
     
    		if(parent.getTypeRequest() == FichierMenu.NOUVEAU_FICHIER)
    		{
    			colorFond = parent.getInfo().getC();
    		}
    		else if(parent.getTypeRequest() == FichierMenu.OUVRIR_FICHIER)
    		{
    			image = parent.getImg();
    		}
     
    		this.addMouseListener(new MouseAdapter(){
    			public void mousePressed(MouseEvent e){
    				point.add(new Point(e.getX() - (pRealTime.getSizePointer()/2), 
    									e.getY() - (pRealTime.getSizePointer()/2), 
    									pRealTime.getSizePointer(), 
    									pRealTime.getColorPointer(), 
    									pRealTime.getFormPointer()));
    				repaint();
    			}
    		});
     
    		this.addMouseMotionListener(new MouseMotionListener(){
    			public void mouseDragged(MouseEvent e) {
    				point.add(new Point(e.getX() - (pRealTime.getSizePointer() / 2), 
    						e.getY() - (pRealTime.getSizePointer() / 2), 
    						pRealTime.getSizePointer(), 
    						pRealTime.getColorPointer(), 
    						pRealTime.getFormPointer()));
    				repaint();
    			}
     
    			public void mouseMoved(MouseEvent e) {}
    		});
    	}
     
    	public void paintComponent(Graphics g){
     
    		g.setColor(colorFond);
    		g.fillRect(0, 0, width, height);
     
    			for(Point p : this.point)
    			{
    				g.setColor(p.getColor());
     
    					g.fillRect(p.getX(), p.getY(), p.getSize(), p.getSize());
     
    			}
    	}
    }
    Avez vous idée sur comment je peux résoudre ce problème ?

  2. #2
    Rédacteur/Modérateur
    Avatar de Metafire18
    Homme Profil pro
    Ingénieur de recherche Orange Labs
    Inscrit en
    Décembre 2007
    Messages
    777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur de recherche Orange Labs

    Informations forums :
    Inscription : Décembre 2007
    Messages : 777
    Billets dans le blog
    1
    Par défaut
    J'ai déjà eu ce souci mais je ne sais plus comment je l'avais résolu

    Le lien vers tes sources ne marche pas.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Plutôt que de filer les sources vers tout le projet, il serait plus judicieux de copier/coller le code du listener...


    a++

  4. #4
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Typiquement, c'est que les coordonnées de la souris sont exprimées dans un référentiel différent de celui que toi tu attends (genre les coordonnées sont exprimées dans le référentiel de la JFrame, le fenêtre mère de ton appli, et pas du composant affichant ton image).

    A tout hasard, le décalage ne correspondrait-il pas à quelque chose comme le décalage entre le bord haut gauche de ta fenêtre d'application et le pixel haut gauche de ton image (cf. les deux flêches dans ton screenshot remanié).

    Il y a d'autres possibilités dans ce style, mais à toi de founier.
    Je serais toi, je commencerais par afficher les coordonnées tu tu obtiens quand tu pointes avec le curseur le point tout en haut à gauche de ton image, et avec un logiciel de retouche photo (genre paint.net), voir à quel point ça correspond sur le screenshot de ton appli.
    Genre si tu trouves pour le point hg de ton image (17, 34), tu pars du point hg de ton image et tu vas à gauche de 17 pixels et en haut de 34 pixels et tu vois sur quoi tu tombes.

    EDIT: d'après la javadoc, getX du MouseEvent dit "Returns the horizontal x position of the event relative to the source component. ".
    Il te retourne donc les coordonnées relativement au système de coordonnées du composant qui a émis l'événement.
    A priori, il faut donc s'assurer que le 'addListener' est bien fait sur le bon composant (ie. celui qui affiche ton image, genre un jLabel), ce qui semble être le cas chez toi (la classe Dessin est celle du addListener et également celle qui semble dessinner l'image).

  5. #5
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 115
    Par défaut
    Le décalage correspond effectivement entre le bord haut gauche de la fenêtre d'application et entre le bord haut gauche l'image.

    Par contre, je ne comprends pas pourquoi il fait ce décalage car mon addMouseListener est bien appliqué sur le bon composant à savoir la classe Dessin (qui est hérité d'un JPanel) sur laquelle je me charge de dessiner.

Discussions similaires

  1. Probleme d'affichage d'une image dans un script cgi
    Par Jim_Nastiq dans le forum Web
    Réponses: 3
    Dernier message: 25/04/2006, 16h49
  2. Probleme avec les "input type="image" "
    Par khokho dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 26/03/2006, 17h12
  3. [WIN XP] Probleme avec l'apercu d'image
    Par tiboooo dans le forum Windows XP
    Réponses: 6
    Dernier message: 10/01/2006, 20h27
  4. [Upload] probleme de récupération de fichier image
    Par BernardT dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2005, 01h12
  5. [MFC] probleme de rafraichissement d'une image
    Par Vestaproman dans le forum MFC
    Réponses: 6
    Dernier message: 09/01/2004, 23h59

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