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

2D Java Discussion :

Problème de changement de coordonnées


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 95
    Par défaut Problème de changement de coordonnées
    Bonjour,
    voici mon problème:
    J'ai une sous-classe de JPanel, un panel ou je peux dessiner.
    Quand je clique sur mon Jpanel, je souhaite que le lieu où j'ai cliqué soit la nouvelle origine du système de coordonnées.
    J'ai donc un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void mouseClicked(MouseEvent e) {
    	Graphics2D g = (Graphics2D)getGraphics();
    	g.translate(e.getX(),e.getY());
     
    }
    mais le problème c'est que le code qui dessine et qui se trouve dans "paintComponent(Graphics g)" ne tient pas compte de mon changement de repère. C'est-à-dire que je voudrais trouver un moyen de faire en sorte que l'argument passé à paintComponent soit justement mon contexte graphique modifié et pas l'original.
    En fait je voudrais faire évoluer mon contexte graphique au cours de l'exécution du programme et rafraichir mon JPanel avec ce contexte modifié à chaque fois que nécessaire.
    Je pense que c'est un problème assez courant dont je n'ai pas la réponse.
    J'ai essayé de rajouter un champs de type Graphics à la classe Jpanel mais en vain. J'ai appelé paintComponent(g) dans la méthode "MouseClicked". Ca marche mais il parait qu'il ne faut pas appeler directement cette méthode (pour des raisons qui m'échappent). En fait il me faudrait une méthode repaint mais qui accepterait un argument de type Graphics. Il doit bien y avoir une méthode canonique et jolie de procéder.
    Merci pour votre précieux éclairage.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Tu ne dois pas manipuler ainsi le graphics du composant. Il te faut sauvegarder la valeur de la translation et l'appliquer dans le paintComponent() (cette methode est automatiquement appellee par la thread chargee du reaffichage si tu penses a appeler repaint() a la fin de ta methode mouseClicked()).

    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
    public void mouseClicked(MouseEvent e) {
       origin = new Point(e.getX(),e.getY());
       repaint();	
    }
     
    /** {@inheritDoc}
    */
    @Override protected void paintComponent(Graphics g) {
      if (origin != null) {
        g.translate(origin.x, origin.y);
      }
      [...]
      if (origin != null) {
        g.translate(-origin.x, -origin.y);
      }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. problème de changement de style du curseur
    Par ruud002 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/10/2006, 14h14
  2. Réponses: 18
    Dernier message: 20/07/2006, 17h55
  3. Problème de changement de données personnelles
    Par BnA dans le forum Langage
    Réponses: 9
    Dernier message: 15/05/2006, 14h02
  4. [Dataset] problème de changement de status
    Par Rayek dans le forum Bases de données
    Réponses: 4
    Dernier message: 14/10/2005, 17h00

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