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 :

problème d'utilisation java.awt.Robot


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 16
    Par défaut problème d'utilisation java.awt.Robot
    Bonjour,

    j'ai un petit problème,

    je veux tracer une droite parallèle, pour cela,je fais déplacer la souris sur une droite qui vérifie l'équation de la droite parallèle que je veux créer.J'utilise la classe java.awt.Robot et j'arrive bien à faire déplacer la souris. Mais après, je ne peux pas cliquer pour sélectionner les deux points de la droite.


    Le code pour déplacer ma souris sur la droite
    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
     
    public void mouseMoved(MouseEvent e) {
     
          if(etape==5){
     
          try{
             Robot r= new Robot();
             for (int i = 0; i < 300; i++)
               {
                  for (int j = 0; j < 300; j++)
                  {
                     if ((j - (a * i) - (c * 20)) < 0.5f && (j - (a * i) - (c * 20)) > -0.5f)
                       r.mouseMove((int)(i+this.getLocationOnScreen().getX()),(int)(j+this.getLocationOnScreen().getY()));
                  }
               }
             // trouver comment faire pour cliquer sur le point voulu
              if(SwingUtilities.isRightMouseButton(e))
                {
                     r=null;
                }   
          }
           catch(Exception ex){
              System.out.println("Exception :"+ex.getMessage());
           }
     
          }
       }
    Ce que j'aimerais faire dans 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
     
       public void mouseClicked(MouseEvent e)
     
       {
       Graphics g = getGraphics();
    if(etape==5){
             System.out.println("dans 6ème étape");
    //        trouver comment faire pour cliquer sur le point voulu   
     if(SwingUtilities.isRightMouseButton(e))
                {
             p4 = new Point(e.getX(),e.getY());
             g.drawRect(p4.x,p4.y,1,1);
              }
              }
    }
    mais la souris se déplace juste sur la droite et je ne peux rien faire d'autre. Est ce que quelqu'un saurait comment je peux faire pour cliquer afin de créer mes points?

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    La classe Robot dispose d'une méthode mousePress :
    Citation Envoyé par API Docs
    mousePress(int buttons)
    Presses one or more mouse buttons.
    Tu passes en paramètre le bouton que tu veux cliquer (voir le lien pour plus d'info).

    Je suis pas sur que c'est la meilleure méthode pour ce que tu veux faire, enfin bon...

    Bon courage

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 16
    Par défaut
    merci pour l'ai janitrix mais ça ne me permet pas de faire ce que je veux. mousePress() va appuyer automatiquement un bouton alors que je veux que ce soit l'utilisateur qui puisse faire cela. En fait, ce qu'il faudrait c'est pouvoir faire interagir en même temps la souris normale et le robot. Mais je ne sais pas si cela est possible

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    Bonjour,

    A mon avis le soucis vient du fait que tu bouges la souris (par le Robot) dans un évènement (mouseMoved) géré par l'event dispatching thread (EDT)

    Ainsi, l'EDT ne peut pas gérer d'autres évènement tant que tu ne sors pas de la fonction (mouseMoved) qui doit gérer cet évènement.

    Donc, impossible de gérer les clics pendant que ton curseur bouge tout seul grâce au Robot.

    Pour éviter ceci, tu dois lancer un Thread en parallèle qui fait le travail de ton robot pour libérer l'EDT et ainsi laisser l'EDT libre de capturer les clics en parallèle.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 16
    Par défaut
    Dans le thread que je dois lancer en parallèle, je dois mettre dans la méthode run(), ce que doit faire mon robot? Puis le thread, je dois le lancer où? Dans ma méthode mouseClicked()? J'ai essayé de regarder vite fait comment faire des threads mais je n'ai pas réussi, j'ai sûrement dû me tromper quelque part.

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    > Dans le thread que je dois lancer en parallèle, je dois mettre dans la
    > méthode run(), ce que doit faire mon robot?

    Oui c'est ça.

    > Puis le thread, je dois le lancer où? Dans ma méthode mouseClicked()?

    Non, dans mouseMoved puisque ton code du Robot est dans mouseMoved.
    ==> Dans mouseMoved : tu crée ton Thread et tu le lance (monThread.start()).

    > J'ai essayé de regarder vite fait comment faire des threads mais je n'ai
    > pas réussi, j'ai sûrement dû me tromper quelque part.

    Tu crées une classe qui hérite de Thread ou tu redéfinis la méthode run() avec le traitement que fait le Robot.

Discussions similaires

  1. utiliser java.awt.image et java.awt.Graphics2D
    Par leolio69 dans le forum Android
    Réponses: 3
    Dernier message: 08/12/2011, 23h37
  2. [java.awt.Font] Utiliser sa propre Police ?
    Par OddAnt dans le forum Multimédia
    Réponses: 5
    Dernier message: 08/01/2010, 14h13
  3. Problème pour utiliser java.awt.Dimension
    Par sider dans le forum Débuter
    Réponses: 6
    Dernier message: 12/08/2009, 23h49
  4. Effets indésirables avec java.awt.Robot
    Par LGnord dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/08/2008, 14h34
  5. problème d'utilisation java -jar
    Par ramaro dans le forum Langage
    Réponses: 8
    Dernier message: 02/08/2008, 09h56

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