begin process at 2010 02 09 21:51:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Multimédia

 > 

Java2D

 > 

utilisation java.awt.Robot


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

utilisation java.awt.Robot

lundi 23 juillet 2007 à 09:02:59 | utilisation java.awt.Robot

umafaid

Bonjour,

j'utilise la classe Robot pour me déplacer automatiquement sur un panel. Mais j'aimerais que le robot s'arrête au clic de l'utilisateur et qu'un point soit créé.

J'ai un thread qui exécute le code du robot. Et j'appelle ce thread dans mon MouseClicked, juste avant que l'utilisateur puisse cliquer pour sélectionner son point. Seulement, le clic, ne fait rien, le robot continue à se déplacer automatiquement. Est ce que quelqu'un saurait comment je peux régler ce problème?

Voici mon code:

thread implémentant le robot 
import java.awt.Robot;

public class FirstThread extends Thread {

   PanelParallèle p;
   boolean actif;
   
   
    public FirstThread(PanelParallèle p) {
       this.p =p;
       this.actif=false;
       
    }

    public void run() {
       actif=true;
       
       while(actif==true){
           
          try{
               Robot r= new Robot();
               for (int i = 0; i < 300; i++)
                 {
                    for (int j = 0; j < 300; j++)
                    {
                       if ((j - (p.coefDir2 * i) - (p.absOr2 * 20)) < 0.5f && (j - (p.coefDir2 * i) - (p.absOr2 * 20)) > -0.5f)
                       r.mouseMove((int)(i+p.getLocationOnScreen().getX()),(int)(j+p.getLocationOnScreen().getY()));
                    }
                 }
               //Thread.yield();
            }
             catch(Exception ex){
                System.out.println("Exception :"+ex.getMessage());
             }
                }
    }
   
    public void setActif(boolean a){
       actif=a;    
    }
}



méthode mouseClicked qui exécute le thread

public void mouseClicked(MouseEvent e)

   {
   Graphics g = getGraphics();
 if(etape==5){
         System.out.println("dans 6ème étape");
        thr1 = new FirstThread(this);   
        //SwingUtilities.invokeLater(thr1);
        thr1.start();
        System.out.println("fin thread");
      }
     
      if(etape==6){
         System.out.println("dernière étape");
           thr1.setActif(false);
           System.out.println(thr1.actif);
           thr1=null;
        
           p4 = new MonPoint(e.getX(),e.getY());
                  
           System.out.println("p4 x" +p4.x);
           System.out.println("p4 y" +p4.y);
                    p4.affiche(g);
                    li.add(p4);
                    forme.add(p4);
                 
                    Ligne l2 = new Ligne(li.size());
                    MonPoint[] tab = new MonPoint[li.size()];

                    for (int k=0; k<li.size(); k++){
                    tab[k]=li.get(k);
                    l2.points=tab;
                    }
                    l2.affiche(g);
                    forme.add(l2);   
           }
      etape++;
    }

Merci d'avance pour l'aide




lundi 23 juillet 2007 à 12:06:32 | Re : utilisation java.awt.Robot

KenZara

Bonjour,

J'ai plusieurs questions à te poser afin de mieux comprendre le fonctionnement, je vois que dans la méthode mouseClicked y a une variable etape à quel moment était elle initialisé? Arrives tu à avoir le message: "dernière étape" ? autre point, et il se peut que je me trompe, (j'ai pas eu le temps de vérifier) n'est il pas meilleur de killer ton thread au lieu de le mettre à null? Enfin bref, j'avais lu quelque part (une source que j'ai pas vérifié) que tu peux toujours utiliser System.gc(); afin de permettre au garbage collector de bien faire le nettoyage :) cette ligne de code que tu pourras mettre éventuellement aprés ta ligne: thr1=null;

Kenza
lundi 23 juillet 2007 à 13:21:33 | Re : utilisation java.awt.Robot

umafaid

En fait, je n'ai mis que la partie qui me pose problème dans la méthode mouseClicked. Je n'ai pas le message "dernière étape" car mon Robot ne s'arrête pas au clic suivant. Il s'arrête après plusieurs clics et j'ai bien le message qui s'affiche. Mais j'aimerais que ce soit fait au premier clic après le robot. Je ne sais pas si c'est plus clair


lundi 23 juillet 2007 à 13:58:34 | Re : utilisation java.awt.Robot

KenZara

Affirmatif. Mais ce qui me pose problème c'est la variable etape à quel moment est elle initialisé? Et à quoi correspond la valeur que tu lui attribues, si le message d'erreur n'apparaît qu'aprés moulte tentaives de click, il est peut être normal à cause de cette variable, parce que là la question qui se pose ce n'est pas le fait que le thread ne s'arrête pas mais le fait que ton bout de code ne se lance pas pour une raison ou pour une autre. Si le problème serait le thread, as tu essayé la ligne que je t'ai proposé le system.gc(); et est ce que ça répondait à l'autre moitié de ta question.
Kenza  
lundi 23 juillet 2007 à 13:58:54 | Re : utilisation java.awt.Robot

KenZara

Affirmatif. Mais ce qui me pose problème c'est la variable etape à quel moment est elle initialisé? Et à quoi correspond la valeur que tu lui attribues, si le message d'erreur n'apparaît qu'aprés moulte tentaives de click, il est peut être normal à cause de cette variable, parce que là la question qui se pose ce n'est pas le fait que le thread ne s'arrête pas mais le fait que ton bout de code ne se lance pas pour une raison ou pour une autre. Si le problème serait le thread, as tu essayé la ligne que je t'ai proposé le system.gc(); et est ce que ça répondait à l'autre moitié de ta question.
Kenza  
lundi 23 juillet 2007 à 13:59:39 | Re : utilisation java.awt.Robot

KenZara

Affirmatif. Mais ce qui me pose problème c'est la variable etape à quel moment est elle initialisé? Et à quoi correspond la valeur que tu lui attribues, si le message d'erreur n'apparaît qu'aprés moulte tentaives de click, il est peut être normal à cause de cette variable, parce que là la question qui se pose ce n'est pas le fait que le thread ne s'arrête pas mais le fait que ton bout de code ne se lance pas pour une raison ou pour une autre. Si le problème serait le thread, as tu essayé la ligne que je t'ai proposé le system.gc(); et est ce que ça répondait à l'autre moitié de ta question.
Kenza  
lundi 23 juillet 2007 à 14:00:10 | Re : utilisation java.awt.Robot

KenZara

Affirmatif. Mais ce qui me pose problème c'est la variable etape à quel moment est elle initialisé? Et à quoi correspond la valeur que tu lui attribues, si le message d'erreur n'apparaît qu'aprés moulte tentaives de click, il est peut être normal à cause de cette variable, parce que là la question qui se pose ce n'est pas le fait que le thread ne s'arrête pas mais le fait que ton bout de code ne se lance pas pour une raison ou pour une autre. Si le problème serait le thread, as tu essayé la ligne que je t'ai proposé le system.gc(); et est ce que ça répondait à l'autre moitié de ta question.
Kenza  
lundi 23 juillet 2007 à 14:01:08 | Re : utilisation java.awt.Robot

KenZara

 

Affirmatif. Mais ce qui me pose problème c'est la variable etape à quel moment est elle initialisé? Et à quoi correspond la valeur que tu lui attribues, si le message d'erreur n'apparaît qu'aprés moulte tentaives de click, il est peut être normal à cause de cette variable, parce que là la question qui se pose ce n'est pas le fait que le thread ne s'arrête pas mais le fait que ton bout de code ne se lance pas pour une raison ou pour une autre. Si le problème serait le thread, as tu essayé la ligne que je t'ai proposé le system.gc(); et est ce que ça répondait à l'autre moitié de ta question.
Kenza  

lundi 23 juillet 2007 à 14:01:50 | Re : utilisation java.awt.Robot

KenZara

 

Affirmatif. Mais ce qui me pose problème c'est la variable etape à quel moment est elle initialisé? Et à quoi correspond la valeur que tu lui attribues, si le message d'erreur n'apparaît qu'aprés moulte tentaives de click, il est peut être normal à cause de cette variable, parce que là la question qui se pose ce n'est pas le fait que le thread ne s'arrête pas mais le fait que ton bout de code ne se lance pas pour une raison ou pour une autre. Si le problème serait le thread, as tu essayé la ligne que je t'ai proposé le system.gc(); et est ce que ça répondait à l'autre moitié de ta question.
Kenza  

lundi 23 juillet 2007 à 14:02:04 | Re : utilisation java.awt.Robot

KenZara

 

Affirmatif. Mais ce qui me pose problème c'est la variable etape à quel moment est elle initialisé? Et à quoi correspond la valeur que tu lui attribues, si le message d'erreur n'apparaît qu'aprés moulte tentaives de click, il est peut être normal à cause de cette variable, parce que là la question qui se pose ce n'est pas le fait que le thread ne s'arrête pas mais le fait que ton bout de code ne se lance pas pour une raison ou pour une autre. Si le problème serait le thread, as tu essayé la ligne que je t'ai proposé le system.gc(); et est ce que ça répondait à l'autre moitié de ta question.
Kenza  


1 2

Cette discussion est classée dans : system, out, thread, robot, p4


Répondre à ce message

Sujets en rapport avec ce message

Thread [ par limalima ] Bonjour à tous,j'ai un petit programme qui consiste à retirer ou déposer une certaine somme d'argent sur un compte en banqueje ne peux retirer  que si deconcatenation [ par JMBeaucoup ] Bonjour,j'ai un problème pour déconcaténer correctement une chaine.Voila j'ai concaténer deux tableaux d'entier en une chaine et lors de la déconcatén creer un graph via un fichier texte [ par tomski ] Salut!Jessaye a partir dun fichier texte de creer un graphique.Le fichier texte contient :Etiquette;50Love;20Filin;3Mais dans le futur il peut conteni probleme de remplissage dune Jlist via un fichier texte [ par tomski ] Salut!Jessaye a partir dun fichier texte de creer un graphique.Le fichier texte contient :Etiquette;50Love;20Filin;3Mais dans le futur il peut conteni JButton avec Iterator [ par riderfun ] Bonjour, j'ai une petite question concernant l'iterator. En fait je ne saisis pas trop comment ça fonctionne car je voudrais créer un bouton selon le Serialisation d'objet à travers une socket [ par BloP68 ] Bonjour , Je suis en train de crée une application qui envoi un objet serialiser à travers une socket< Event en Java. [ par codeur67 ] Bonjour. Je cherche à coder un soft d'IM avec le protocole Skype et avec le package Skype4Java. J'ai besoin de créer un Listener sur l'objet contact_l Récupérer valeur d'un Thread dans des JTextField [ par nowicki ] Bonjour.Depuis quelques semaines je travaille sur un projet et je n'arrive pas à récupérer mes valeurs provenant d'un Thread dans des JTextField.Je vo parcours [ par nourcine18 ] bonjour à tous,je suis debutant en java. j'ai une matrice ne compris que 0 et 1. je veux compter le nombre des 1 dans chaque colonne. j'ai essayé avec arraylist base de donnée [ par zedtimi ] bonjour tout le mondejai etabli une connection avec une base de donnée et maitenant je veut utiliser une arraylist ou un tableau pour sauvgardé mes do


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,343 sec (4)

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