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

 Java Discussion :

méthode addKeyListener() indéfinie


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 53
    Par défaut méthode addKeyListener() indéfinie
    Bonjour,

    j'ai un problème avec le KeyListener : impossible d'utiliser la méthode addKeyListener...
    La fonction est non définie. (pourtant le import me semble correct).

    (Je veux la placer dans la méthode Loop() (avant le while qui fait la boucle).
    (D'ailleurs, il n'y a pas une autre manière de faire pour la boucle ?!!)

    Voici une partie du code :

    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
    82
    83
     
    package gameplay;
     
    import java.awt.DisplayMode;
    import java.awt.Graphics2D;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
     
    import utils.ScreenManager;
     
    public class Game implements KeyListener {
    	private static final DisplayMode POSSIBLE_MODES[] = {
    		new DisplayMode(1680, 1050, 32, 0), new DisplayMode(1680, 1050, 24, 0),
    		new DisplayMode(800, 600, 32, 0), new DisplayMode(800, 600, 24, 0),
    	    new DisplayMode(800, 600, 16, 0), new DisplayMode(640, 480, 32, 0),
    	    new DisplayMode(640, 480, 24, 0), new DisplayMode(640, 480, 16, 0) 
    	};
    	private ScreenManager _Screen;
     
    	public static void main(String args[]) {
    		Game game = new Game();
    	    game.run();
    	}
     
    	public void run() {		
    		_Screen = new ScreenManager();
    	    try {
    	    	DisplayMode displayMode = _Screen.findFirstCompatibleMode(POSSIBLE_MODES);
    	    	_Screen.setFullScreen(displayMode);
    	    	Loop();
    	    } finally {
    	    	_Screen.restoreScreen();
    	    }
    	}
     
    	public void Loop() {
    		long startTime = System.currentTimeMillis();
    	    long currTime = startTime;
     
    	    while(true) {
    	    	long elapsedTime = System.currentTimeMillis() - currTime;
    	    	currTime += elapsedTime;
     
    	    	// update game
    	    	Update(elapsedTime);
     
    	    	ObjectManager.getInstance().Update(elapsedTime);
     
    	    	// draw and update the screen
    	    	Graphics2D g = _Screen.getGraphics();
    	    	ObjectManager.getInstance().Draw(g);
    	    	g.dispose();
    	    	_Screen.Update();	
     
    	    	// take a nap
    	    	try {
    	    		Thread.sleep(20);
    	    	} catch (InterruptedException ex) {
    	    	}
    	    }
    	}
     
    	public void Update(long elapsedTime) {	
    	}
     
    	@Override
    	public void keyPressed(KeyEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void keyReleased(KeyEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void keyTyped(KeyEvent e) {
    		// TODO Auto-generated method stub
     
    	}
    }
    Merci d'avance et bon courage pour vos travaux respectifs
    ++

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, il faut un composant pour ajouter ce KeyListener, une JFrame par exemple.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 53
    Par défaut
    A ok !
    Merci ^^.

    Mais ça ne fonctionne toujours pas ^^'.
    Et j'avoue que je ne comprends pas trop pourquoi...

    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
     
    package gameplay;
     
    import java.awt.DisplayMode;
    import java.awt.Graphics2D;
     
    import utils.ScreenManager;
     
    public class Game {
    	private BoucleMgr _BoucleMgr;
    	private static final DisplayMode POSSIBLE_MODES[] = {
    		new DisplayMode(1680, 1050, 32, 0), new DisplayMode(1680, 1050, 24, 0),
    		new DisplayMode(800, 600, 32, 0), new DisplayMode(800, 600, 24, 0),
    	    new DisplayMode(800, 600, 16, 0), new DisplayMode(640, 480, 32, 0),
    	    new DisplayMode(640, 480, 24, 0), new DisplayMode(640, 480, 16, 0) 
    	};
    	private ScreenManager _Screen;
     
    	public static void main(String args[]) {
    		Game game = new Game();
    	    game.run();
    	}
     
    	public void run() {		
    		_BoucleMgr = new BoucleMgr();
    		_Screen = new ScreenManager();
    	    try {
    	    	DisplayMode displayMode = _Screen.findFirstCompatibleMode(POSSIBLE_MODES);
    	    	_Screen.setFullScreen(displayMode);
    	    	Controller PlayerController = new Controller(_BoucleMgr,_Screen);
    	    	_Screen.getJFrame().addKeyListener(PlayerController);
    	    	Loop();
    	    } finally {
    	    	_Screen.restoreScreen();
    	    }
    	}
     
    	public void Loop() {
    		long startTime = System.currentTimeMillis();
    	    long currTime = startTime;
     
    	    do {
    		    _Screen.getJFrame().requestFocusInWindow();
    	    	long elapsedTime = System.currentTimeMillis() - currTime;
    	    	currTime += elapsedTime;
     
    	    	// update game    	
    	    	ObjectManager.getInstance().Update(elapsedTime);
     
    	    	// draw and update the screen
    	    	Graphics2D g = _Screen.getGraphics();
    	    	ObjectManager.getInstance().Draw(g);
    	    	g.dispose();
    	    	_Screen.Update();	
     
    	    	// take a nap
    	    	try {
    	    		Thread.sleep(20);
    	    	} catch (InterruptedException ex) {
    	    	}
    	    } while(_BoucleMgr.Boucler());
    	}
     
    	public class BoucleMgr {
    		private boolean _bContinuer = true;
     
    		public BoucleMgr() {	
    		}
     
    		public void Terminer() {
    			_bContinuer = false;
    		}
     
    		public boolean Boucler() {
    			return _bContinuer;
    		}
    	}
    }
    et le controller :

    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
     
    package gameplay;
     
    import gameplay.Game.BoucleMgr;
     
    import java.awt.Color;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
     
    import utils.ScreenManager;
     
    public class Controller implements KeyListener {
    	protected BoucleMgr _BoucleMgr;
    	protected ScreenManager _Screen;
     
    	public Controller(BoucleMgr boucleMgr, ScreenManager screen) {
    		_BoucleMgr = boucleMgr;
    		_Screen = screen;
    	}
     
    	@Override
    	public void keyPressed(KeyEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void keyReleased(KeyEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void keyTyped(KeyEvent e) {
    		if(e.getKeyCode() == KeyEvent.VK_ESCAPE) {
    			//_BoucleMgr.Terminer();
    			_Screen.getJFrame().setBackground(Color.GREEN);
    		}
    	}
    }
    Désolé de vous accabler avec une tonne de code ^^'. Mais j'ai peur qui si je ne met pas au moins ça, je vous enlève les moyens de comprendre d'où vient l'erreur.

  4. #4
    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 faut définir le "ça ne fonctionne pas". Si tu postes ici, c'est que ça ne fonctionne pas. Erreur de compilation ? D'exécution ?
    Donne les erreurs
    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.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 53
    Par défaut
    Enfait il n'y a aucune erreur.
    Il ne se passe simplement... rien. (lorsque j'appuie sur Echap).

  6. #6
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 53
    Par défaut
    La ou c'est bizarre, c'est que la méthode KeyPressed marche, mais pas la KeyTyped.

    Comment je peux faire si je veux faire "2 touches entrainent une action" ?
    On ne peut utiliser qu'une touche à la fois...

Discussions similaires

  1. Permuter 2 méthodes indéfiniment
    Par BobbyWeb dans le forum Général Java
    Réponses: 9
    Dernier message: 30/08/2011, 15h44
  2. OnSubjobOk, Méthode tOracleInput est indéfinie
    Par cocaaladioxine dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 07/06/2011, 16h26
  3. [Singleton] Différences avec méthodes statiques
    Par Franche dans le forum Design Patterns
    Réponses: 1
    Dernier message: 26/02/2003, 17h10
  4. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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