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 :

Déplacer un listener d'un objet à un autre.


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai Avatar de mimievan
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 25
    Points : 18
    Points
    18
    Par défaut Déplacer un listener d'un objet à un autre.
    Bonjour les gens!

    Donc comme il est dit dans le titre, j'aimerais déplacer un listener d'un objet à un autre. Je m'explique : j'ai une liste de joueurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /*....*/ Joueur[] listeJoueur = new Joueur[7]; /*....*/
    C'est le listeJoueur[0] qui peut bouger et je voudrais faire quand j'appuis sur espace, le listener passe au joueur le plus proche. Voilà mon code en entier :
    la Class Joueur
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    public class Joueur extends JPanel{
    	private String chemin_sariny;
    	private int a_couper_sur_x;
    	private int a_couper_sur_y;
    	private boolean a_la_balle;
    	private int position_selon_x;
    	private int position_selon_y;
     
    	public void setPathName(String ouioui)
    	{
    		chemin_sariny = ouioui;
    	}
    	public String getPathName()
    	{
    		return chemin_sariny;
    	}
    	public void setTapahanaY(int x)
    	{
    		a_couper_sur_x = x;
    	}
    	public int getTapahanaY()
    	{
    		return a_couper_sur_x;
    	}
    	public void setTapahanaX(int y)
    	{
    		a_couper_sur_y = y;
    	}
    	public int getTapahanaX()
    	{
    		return a_couper_sur_y;
    	}
     
    	public void setMitazonaBolVe(boolean quoi){
    		a_la_balle = quoi;
    	}
    	public boolean getMitazonaBolVe(){
    		return a_la_balle;
    	}
    	public void setPositionX(int x)
    	{
    		position_selon_x = x;
    	}
    	public int getPositionX()
    	{
    		return position_selon_x;
    	}
    	public void setPositionY(int y)
    	{
    		position_selon_y = y;
    	}
    	public int getPositionY()
    	{
    		return position_selon_y;
    	}
     
    	public Joueur(String chemin, int x, int y){
    		setOpaque(false);
    		setFocusable(true);
    		setLocation(new Point(getPositionX(),getPositionY()));
     
    		setPathName(chemin);
    		setTapahanaX(x);
    		setTapahanaY(y);
    		setPositionX(0);
    		setPositionY(10);
     
    		JLabel le_joueur = new JLabel();
    		JoueurTrottine.setImageInJLabel(le_joueur,getPathName(),getTapahanaX(),getTapahanaY());
    		JoueurTrottine.bouge(getPathName(),getTapahanaX(),getTapahanaY(),le_joueur);
     
    		le_joueur.setPreferredSize(new Dimension(41,41));
    		add(le_joueur);
     
    	}
     
    	public void passeBallon(Joueur aPasser){
    		addKeyListener(new JoueurListener(aPasser));
    	}
    }
    Ma class JoueurTrottine

    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
     
    public class JoueurTrottine{
    	static int tap;
    	static int tap_y;
    	public static void bouge(String pathName, int CoupeX, int CoupeY, JLabel lab) //bouger
        {
    		tap = CoupeX;
    		tap_y = CoupeY;
    		Timer tm = new Timer(10,new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    setImageInJLabel(lab, pathName, tap, tap_y);
    				tap = tap + 41;
                    if(tap >= 329 )
    				{
    					tap = 0;
    				}
                }
            });
            tm.start();
        }
        public static void upDownLeftRight(JPanel pane){
        	pane.addKeyListener(new KeyAdapter(){
        		public void keyPressed(KeyEvent e)
    			{
    				int key = e.getKeyCode();
    				int X = pane.getX();
    				int Y = pane.getY();
    				if (key == KeyEvent.VK_LEFT) 
    				{
    					X = X-5;
    					tap_y = 41;
    				}
    				if (key == KeyEvent.VK_RIGHT) {
    					X = X+5;
    					tap_y = 123;
    				}
    				if (key == KeyEvent.VK_UP) {
    					Y = Y-5;
    					tap_y = 0;
    				}
    				if (key == KeyEvent.VK_DOWN) {
    					Y = Y+5;
    					tap_y = 82;
    				}
    				pane.setLocation(new Point(X,Y));
    	}
        	});
        }
     
        public static void setImageInJLabel(JLabel lab, String chemin_image, int tapahana_x, int tapahana_y){
            ImageIcon icon = new ImageIcon(Sprite.DecoupeImage(chemin_image, tapahana_x, tapahana_y));
    		lab.setIcon(icon);
        }
    }
    et le JoueurListener qui devrait être passé au fur et à mesure où on passe la balle

    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
     
    public class JoueurListener implements KeyListener{
    	Joueur pane;
    	int x;
    	int y;
     
    	public JoueurListener(Joueur pa){
    		pane = pa;
    	}
    	public void keyPressed(KeyEvent e)
    			{
    				int key = e.getKeyCode();
    				if (key == KeyEvent.VK_SPACE) 
    				{
    					JoueurTrottine.upDownLeftRight(pane);
    					System.out.println("space");
    				}
    	}
    	public void keyReleased(KeyEvent e)
    	{
    	}
    	public void keyTyped(KeyEvent e)
    	{
    	}
    }
    Merci pour ceux qui vont répondre.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 472
    Points
    472
    Par défaut
    Pour moi c'est une manipulation foireuse ce que tu essais de faire ici.
    Je te conseil plutôt d'ajouter un attribut dans ton listener qui va te permettre de récupérer le joueur courant en début de méthode et d'appliquer tes actions sur ce dernier.

  3. #3
    Membre à l'essai Avatar de mimievan
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par EyZox Voir le message
    Je te conseil plutôt d'ajouter un attribut dans ton listener qui va te permettre de récupérer le joueur courant en début de méthode et d'appliquer tes actions sur ce dernier.
    Je ne vois pas comment faire.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 472
    Points
    472
    Par défaut
    Lorsque tu veux "déplacer ton listener", il te suffit de modifier ton attribut `Joueur pane`, en y mettant le joueur sur lequel tu veux que s'applique l'action.

    Enfin, la je suis entrain de regarder plus en détail ton code et il y a d'autre incohérence que j'ai du mal a comprendre.
    Que fais la méthode passeBallon() dans ta classe Joueur ?

  5. #5
    Membre à l'essai Avatar de mimievan
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par EyZox Voir le message
    Que fais la méthode passeBallon() dans ta classe Joueur ?
    C'est pour passer le ballon entre les joueurs. ça ne va pas? Et dis, tu peux voir ce qui ne va pas? car je suis complètement à côté de la plaque là

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 472
    Points
    472
    Par défaut
    Non ça ne va pas du tout.

    Actuellement avec passeBallon, tu demandes à ton programme de surveiller les entrées clavier sur un JPanel joueur puis dès qu'une action de ce type est détecté, tu exécutes le code sur le joueur destinataire du ballon.

    Conceptuellement rien ne va, donc tant que tu n'apprends pas les bases et que tu ne comprend pas comment fonctionne les IHM SWING sur de petits projets simples, tu n'arriveras a rien. Il existe une multitude de tutoriel sur SWING. Ce conseil, je te l'ai déjà donné ici : http://www.developpez.net/forums/d15...tion-listener/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/03/2008, 17h04
  2. Déplacer un fichier d'une dossier à un autre?
    Par mr_samurai dans le forum C++
    Réponses: 14
    Dernier message: 17/01/2008, 11h00
  3. Réponses: 11
    Dernier message: 20/08/2007, 16h44
  4. déplacer une base de données sur un autre disque ?
    Par caballero dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 13/07/2007, 12h02
  5. Exporter objets dans autre Base
    Par chim33 dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/06/2007, 14h48

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