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

avec Java Discussion :

timer pour déplacer un boutton


Sujet :

avec Java

Vue hybride

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut timer pour déplacer un boutton
    Bonjour

    voila j'ai un petit probleme dans un morceau de code que j'ai dévellopez mais je comprend pas il est ou le probleme, enfaite j'ai un timer qui à chaque 3 seconde il déplace un boutton :

    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
    ActionListener taskPerformer = new ActionListener()
    		    {
     
    				@Override
    				public void actionPerformed(ActionEvent e) {
     
    					test();
    				}
    				public void test() {
     
    					Chariot1.setLocation(Chariot1.getPos_X(), Chariot1.getPos_Y());
    					Chariot1.setPos_X(Chariot1.pos_X + 10);
    					System.out.println(" X : " + Chariot1.getPos_X() + "    y : "  + Chariot1.getPos_Y());
    				}
     
    		    };
    		    Timer timer = new Timer(period, taskPerformer);
    		    timer.start();
    mais le probleme c'est que le boutton il se déplace juste la 1ere fois et apres il devient invisible, j'ai bien met un layout "jp.setLayout(null);"

    donc je comprend pas il est ou le probleme
    merci pour votre aide

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Il nous faudrait le code de Chariot1.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    merci pour votre reponse

    voici le code de chariot c'est une simple classe qui extends d'un JButton

    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
     
    package Mobile;
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Point;
     
    import javax.swing.JButton;
    import javax.swing.JPanel;
     
    public class Chariot extends JButton{
    	public  int pos_X = 0;
    	public  int pos_Y = 0;
     
    	public Chariot(int x, int y, int w, int h) {
    		pos_X = x;
    		pos_Y = y;
    	}
     
    	public  int getPos_X() {
    		return pos_X;
    	}
     
    	public  void setPos_X(int pos_X) {
    		this.pos_X = pos_X;
    	}
     
    	public  int getPos_Y() {
    		return pos_Y;
    	}
     
    	public  void setPos_Y(int pos_Y) {
    		this.pos_Y = pos_Y;
    	}
     
     
    }
    et apres dans le main j'instancier ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chariot  Chariot1  = new Chariot();

  4. #4
    Membre confirmé
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Par défaut
    Il faudrait peut être raffraichir ton composant.

    Essaye

    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
    ActionListener taskPerformer = new ActionListener()
    		    {
     
    				@Override
    				public void actionPerformed(ActionEvent e) {
    					
    					test();
    				}
    				public void test() {
    					
    					Chariot1.setLocation(Chariot1.getPos_X(), Chariot1.getPos_Y());
    					Chariot1.setPos_X(Chariot1.pos_X + 10);
                                            Chariot1.repaint();
    					System.out.println(" X : " + Chariot1.getPos_X() + "    y : "  + Chariot1.getPos_Y());
    				}
    			
    		    };
    		    Timer timer = new Timer(period, taskPerformer);
    		    timer.start();

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Le problème vient du fait que le bouton a une taille à zéro. Donc il est tout de même afficher, mais invisible
    au passage, pense à encapsuler le fonctionnement de Chariot. C'est de l'objet, pas du procédural

    Voici un code fonctionnel :

    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
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.Timer;
     
    public class MoveButton
    {
    	public static void main( String[] arg )
    	{
    		JFrame frame = new JFrame();
    		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
     
    		JPanel panel = new JPanel();
    		panel.setLayout( null );
     
    		final Chariot chariot = new Chariot( 0, 0, 100, 100 );
    		panel.add( chariot );
    		chariot.applyLocation();
     
    		frame.getContentPane().add( panel );
    		frame.setSize( 640, 480 );
    		frame.setVisible( true );
     
    		ActionListener taskPerformer = new ActionListener()
    	    {
     
    			@Override
    			public void actionPerformed(ActionEvent e) {
     
    				test();
    			}
    			public void test() {
     
    				chariot.deplaceX( 10 );
    			}
     
    	    };
    	    Timer timer = new Timer( 500, taskPerformer );
    	    timer.start();
    	}
     
    	static class Chariot extends JButton
    	{
    		private int	pos_X	= 0;
    		private int	pos_Y	= 0;
    		private int width = 0;
    		private int height = 0;
     
    		public Chariot( int x, int y, int w, int h )
    		{
    			pos_X = x;
    			pos_Y = y;
    			width = w;
    			height = h;
    		}
     
    		public void applyLocation()
    		{
    			setBounds( pos_X, pos_Y, width, height );
    		}
     
    		public void deplaceX( int deplace )
    		{
    			pos_X += deplace;
    			applyLocation();
    		}
    	}
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    merci pour votre réponse ton code il marche bien mais dans mon cas il marche pas parce que on plus de ça je déssine des rectangle dans mon Jpanel avec la methode paint() et je pense que le boutton qd je le déplace il se cache d'erriere les rectangles c'est pour ça je le voie pas se déplacé !!!!

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par wagui26 Voir le message
    merci pour votre réponse ton code il marche bien mais dans mon cas il marche pas parce que on plus de ça je déssine des rectangle dans mon Jpanel avec la methode paint() et je pense que le boutton qd je le déplace il se cache d'erriere les rectangles c'est pour ça je le voie pas se déplacé !!!!
    Evidemment, si tu ne dis pas tout....
    Il ne faut pas utiliser la méthode "paint" du JPanel, mais "paintComponent". Et aussi faire un appel à la méthode parent paintComponent, avant ou après le dessin des rectangles selon ton besoin.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. [C++]Timer pour exécution séparée
    Par Invité4 dans le forum SDL
    Réponses: 33
    Dernier message: 26/02/2008, 18h01
  2. [VB.NET] Label - Un timer pour tous ?
    Par b_lob dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/05/2006, 15h56
  3. creer une page avec timer pour 2 URLS
    Par anubisme dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2006, 11h03
  4. Réponses: 4
    Dernier message: 24/11/2005, 08h34

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