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

Applets Java Discussion :

[Débutant(e)] problème dans un applet


Sujet :

Applets Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut [Débutant(e)] problème dans un applet
    je dois créer un applet, qui inscrit sur écran 5 chiffres. Avec les flèches, on diminue et augmente les chiffres et avec l'espace on choisit le chiffr suivant pour le diminuer / augmenter.

    Mon problème est, que j'arrive pas "choisir" le chiffre suivant: en effet je augmente / diminue seulement le premier chiffre. Est-ce que quelqu'un pourrait m'aider, svp?

    Voici le code en plus court avec 2 chiffres seulement:

    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
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
     
    public class CinqChiffres extends Applet implements KeyListener {
     
    	int chiffre1, chiffre2,  x, y;
    	boolean un, deux;
     
    	public void init(){
     
    		addKeyListener(this);
    		requestFocus();
     
    		x=150;
    		y=100;
     
    		chiffre1=5;
    		chiffre2=30;
     
    		un=false; 		
    		deux=false; 
     
    	}
     
    	public void paint(Graphics g){
    		g.setColor(Color.red);
    		g.drawString(" "+chiffre1, x ,y);	
    		g.drawString(" "+chiffre2, x+20 ,y);		
     
    		if (un){
    			g.drawString(" "+chiffre1, x ,y);
    		}
    		if (deux){
    			g.drawString(" "+chiffre2, x+20 ,y);
    		}
    	}
     
     
    	public void keyTyped(KeyEvent e)  { }
     
    	public void keyReleased(KeyEvent e)  { }
     
    	public void keyPressed(KeyEvent e){	
    		un=true;
    		deux=false;		
     
    		if (e.getKeyCode() == KeyEvent.VK_UP){
    			chiffre1++;
    		}
    		if (e.getKeyCode() == KeyEvent.VK_DOWN){
    			chiffre1--;
    		}						
    		repaint ();
     
    		if (e.getKeyCode() == KeyEvent.VK_SPACE){
    			deux=true;
    			un=false;
    			if (e.getKeyCode() == KeyEvent.VK_UP){
    				chiffre2++;				
    			}
    			if (e.getKeyCode() == KeyEvent.VK_DOWN){
    				chiffre2--;		
    			}
    		repaint ();											
    		}				
    	}
    }
    [ Modéré par Bulbo ]
    Ajout d'un tag dans le titre
    Ajout des balises code
    Les Règles du Forum

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Points : 140
    Points
    140
    Par défaut
    Dans ta methode keyPressed, tu reçois un événement. Celui-ci correspond à une seule touche.

    Tu ne passes jamais dans les 2 derniers if de la méthode car la touche pressée n'est jamais à la fois SPACE et UP ou à la fois SPACE et DOWN.

    La touche SPACE doit servir à modifier les booléens un et deux.
    Les touches UP et DOWN doivent modifier chiffre1 ou chiffre2 en fonction des booléens un et deux.

    Pour obtenir un code plus élégant, je te conseille de remplacer tes chiffres par un tableau de chiffres et tes booléens par un index dans ce tableau.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut merci pk960
    J'ai changé en tableau, comme tu as proposé, mais j'arrive toujours pas "choisir" les chiffres suivants... Help, please...

    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
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
     
    public class CinqChiffres extends Applet implements KeyListener {
     
    	int x,y,i;
    	int [] chiffres = {5, 30, 54, 67, 98};
    	final int TAILLE = 5; 
     
    	public void init(){
     
    		addKeyListener(this);
    		requestFocus();
     
    		x=20;
    		y=20;
    	}
     
    	public void paint(Graphics g){
    		g.setColor(Color.red);
    		for (i=0; i<TAILLE; i++){
    			switch (i){
    			case 0: x=20; break;
    			case 1: x=40; break;
    			case 2: x=60; break;
    			case 3: x=80; break;
    			case 4: x=100; break;
    			}			
    			g.drawString(" "+chiffres [i], x,y);			
    		}
    	}
     
     
     
    	public void keyTyped(KeyEvent e)  { }
     
    	public void keyReleased(KeyEvent e)  { }
     
    	public void keyPressed(KeyEvent e){	
    		int i=0;
    		if (e.getKeyCode() == KeyEvent.VK_SPACE){
    			i++;
    		}		
    		if (e.getKeyCode() == KeyEvent.VK_UP){
    			chiffres[i]++;	
    			repaint ();
    		}		
    		if (e.getKeyCode() == KeyEvent.VK_DOWN){
    			chiffres[i]--;
    			repaint ();
    		}	
     
     
    	}
     
    }
    Merci!

    Tootsi

    [ Modéré par Bulbo ]
    Ajout des balises code

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut
    Tu transforme:

    en:


    Et:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     public void keyPressed(KeyEvent e){
    int i=0; //Tu supprime ça et normalement c'est bon
    if (e.getKeyCode() == KeyEvent.VK_SPACE){
    i++;
    }
    En:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public void keyPressed(KeyEvent e){
    if (e.getKeyCode() == KeyEvent.VK_SPACE){
    i = (i+1)%TAILLE ;
    }

    En fait tu reinitialisé i a chaque appel d'evenement, d'ou le fait que sa resté toujours sur le premier nombre

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut voilà
    tu dois avoir raison, je le réinitialise. Mais même avec ces modifs, ça marche pas, ça me donne un message d'erreur:
    java.lang.ArrayIndexOutOfBoundsException: 5

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut voici donc le nouveau code
    Quelqu'un peut m'aider?

    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
     
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
     
    public class CinqChiffres extends Applet implements KeyListener {
     
    	int x=20,y=20,i=0; 
    	int [] chiffres = {5, 30, 54, 67, 98};
    	final int TAILLE = 5; 
     
    	public void init(){
     
    		addKeyListener(this);
    		requestFocus();
    	}
     
    	public void paint(Graphics g){
    		g.setColor(Color.red);
    		for (i=0; i<TAILLE; i++){
    			switch (i){
    			case 0: x=20; break;
    			case 1: x=40; break;
    			case 2: x=60; break;
    			case 3: x=80; break;
    			case 4: x=100; break;
    			}			
    			g.drawString(" "+chiffres [i], x,y);			
    		}
    	}
     
    	public void keyTyped(KeyEvent e)  { }
     
    	public void keyReleased(KeyEvent e)  { }
     
    	 public void keyPressed(KeyEvent e){
    		if (e.getKeyCode() == KeyEvent.VK_SPACE){
    		i = (i+1)%TAILLE ;
    		}	
     
    		if (e.getKeyCode() == KeyEvent.VK_UP){
    			chiffres[i]++;	
    			repaint ();
    		}		
    		if (e.getKeyCode() == KeyEvent.VK_DOWN){
    			chiffres[i]--;
    			repaint ();
    		}						
    	}
    }
    Tootsi[/code]

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Points : 140
    Points
    140
    Par défaut
    Tu écrases le contenu de l'attribut i de la classe CinqChiffres quand tu fais ta boucle dans la méthode paint.

    Remplace donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i=0; i<TAILLE; i++)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int i=0; i<TAILLE; i++)
    Par ailleurs, tu pourrais aussi remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
             switch (i){
             case 0: x=20; break;
             case 1: x=40; break;
             case 2: x=60; break;
             case 3: x=80; break;
             case 4: x=100; break;
             }
    par un simple

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Merci pk960!!!!

    Tootsi

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/03/2013, 16h29
  2. Réponses: 6
    Dernier message: 24/03/2009, 16h17
  3. Réponses: 13
    Dernier message: 17/10/2006, 15h35
  4. [Débutant] Probléme dans applet
    Par brionne dans le forum Applets
    Réponses: 1
    Dernier message: 29/08/2005, 11h53
  5. [Debutant] Problème de sécurité dans un applet
    Par peaceinpal dans le forum Applets
    Réponses: 3
    Dernier message: 09/09/2004, 20h56

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