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

Agents de placement/Fenêtres Java Discussion :

Problème de focus + touches de direction


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 223
    Points : 58
    Points
    58
    Par défaut Problème de focus + touches de direction
    Lut'

    J'ai un petit problème avec le focus. En effet j'ai développé un petit jeu ou on déplace le personnage avec les touches fléchés du clavier.
    J'ai également des boutons sur la fenêtre. Or, quand je commence a cliquer sur un bouton, le panel sur lequel je gère mes évènements clavier n'a plus le focus
    J'aimerais savoir comment il serait possible de toujours intercepter les évenements clavier dans le panel meme quand je clique sur un bouton.

    Merci
    ++

    [ Modéré par Bulbo ]
    Ajout d'un tag dans le titre
    Les Règles du Forum

  2. #2
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Regarde le concept de GlassPane, c'est ce que tu dois utiliser pour ton application..

    en gros c'est un panel transparent que tu utilises pour catcher (et eventuellement consommer) des evenements destines a ton appli ..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  3. #3
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Ah? C'est cool ça. Moi quand j'avais développé ce genre de choses j'ai été obligé de mettre le Listener sur la Main Frame.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 223
    Points : 58
    Points
    58
    Par défaut
    Merci mais ca n'a pas l'air de fonctionner , voila mon code :

    Code dans la classe "Grille" :

    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
    Principale.frame.getGlassPane().addKeyListener(this);
    Principale.frame.getGlassPane().setVisible(true);
     
    ...
     
    public void keyPressed(KeyEvent e)
    {
            int key = e.getKeyCode();
            switch (key) {
                case KeyEvent.VK_DOWN  : {grinch1.Deplacer("B");break;}
                case KeyEvent.VK_UP    : {grinch1.Deplacer("H");break;}
                case KeyEvent.VK_LEFT  : {grinch1.Deplacer("G");break;}
                case KeyEvent.VK_RIGHT : {grinch1.Deplacer("D");break;}
            }
    }

  5. #5
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Regarde cette demo http://java.sun.com/docs/books/tutor...html#glasspane
    Je pense que cela devrait t'eclairer ..

    Ce que toi tu veux faire c'est juste consommer les evenements claviers a toi d'adapter ..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 223
    Points : 58
    Points
    58
    Par défaut
    ben euh ... j'ai beau relire 50 fois, je comprends rien a cette source ....

    Ca m'a l'air d'un compliqué !!! En delphi il suffit de mettre une propriété a True pour que le clavier soit gérée par la fenêtre principale !

    Serais-t'il possible de m'aider un peu + ? Je suis novice en Java ...

    Merci
    ++

  7. #7
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    ça ça marche (SANS le glassPane) par contre c'est ctr+c pour fermer la fenetre lol
    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
    import javax.swing.JFrame;
    import java.awt.event.KeyListener;
    import java.awt.event.KeyEvent;
     
    public class Test extends JFrame implements KeyListener
    {
     
    	public Test()
    	{
    		this.setTitle("test");
    		this.addKeyListener(this);
    	}
     
    	public static void main (String[] args)
    	{
    		Test test = new Test();
    		test.setVisible(true);
    	}
     
    	public void keyPressed(KeyEvent e)
    	{
    		int key = e.getKeyCode(); 
    		        switch (key) { 
    		            case KeyEvent.VK_DOWN  : {System.out.println("B");break;} 
    		            case KeyEvent.VK_UP    : {System.out.println("H");break;} 
    		            case KeyEvent.VK_LEFT  : {System.out.println("G");break;} 
    		            case KeyEvent.VK_RIGHT : {System.out.println("D");break;} 
    		        } 
     
    	}
     
    	public void keyReleased(KeyEvent e)
    	{}
     
    	public void keyTyped(KeyEvent e)
    	{}
    }
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  8. #8
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 223
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par bulbo
    Regarde cette demo http://java.sun.com/docs/books/tutor...html#glasspane
    Je pense que cela devrait t'eclairer ..

    Ce que toi tu veux faire c'est juste consommer les evenements claviers a toi d'adapter ..

    Bulbo
    En fait ta méthode marche niquel avec la souris!

    mais pas avec le clavier...

    voici les 2 codes:

    Ce code fonctionne pour la souris .... (impossible de cliquer sur un bouton)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Principale.frame.getGlassPane().addMouseListener( new MouseAdapter() {});
    Principale.frame.getGlassPane().setVisible(true);
    Ce code ne fonctionne pas pour le clavier
    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
    		Principale.frame.getGlassPane().addKeyListener(new KeyListener() {
    			public void keyPressed(KeyEvent e)
    			{
    				int key = e.getKeyCode();
    	        	switch (key) {
    	            	case KeyEvent.VK_DOWN  : {grinch1.Deplacer("B");break;}
    	            	case KeyEvent.VK_UP    : {grinch1.Deplacer("H");break;}
    	            	case KeyEvent.VK_LEFT  : {grinch1.Deplacer("G");break;}
    	            	case KeyEvent.VK_RIGHT : {grinch1.Deplacer("D");break;}
    	        	}
    			}
     
    			public void keyTyped(KeyEvent e) {
    				// TODO Auto-generated method stub
     
    			}
     
    			public void keyReleased(KeyEvent e) {
    				// TODO Auto-generated method stub
     
    			}
    		});
    		Principale.frame.getGlassPane().setVisible(true);

  9. #9
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Version AVEC GlassPane

    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
    import javax.swing.JFrame;
    import java.awt.event.KeyListener;
    import java.awt.event.KeyEvent;
    import javax.swing.JComponent;
     
     
    class GlassPaneKeyListener extends JComponent implements KeyListener
    {
    	public GlassPaneKeyListener()
    	{}
     
    	public void keyPressed(KeyEvent e)
    		{
    			int key = e.getKeyCode(); 
    			        switch (key) { 
    			            case KeyEvent.VK_DOWN  : {System.out.println("B");break;} 
    			            case KeyEvent.VK_UP    : {System.out.println("H");break;} 
    			            case KeyEvent.VK_LEFT  : {System.out.println("G");break;} 
    			            case KeyEvent.VK_RIGHT : {System.out.println("D");break;} 
    			        } 
     
    		}
     
    		public void keyReleased(KeyEvent e)
    		{}
     
    		public void keyTyped(KeyEvent e)
    	{}
    }
     
    public class Test extends JFrame 
    {
     
    	public Test()
    	{
    		this.setTitle("test");
     
    		GlassPaneKeyListener gp = new GlassPaneKeyListener();
    		gp.setVisible(true);
     
    		this.addKeyListener(gp);
    		this.setGlassPane(gp);
    	}
     
    	public static void main (String[] args)
    	{
    		Test test = new Test();
    		test.setVisible(true);
    	}
     
     
    }
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  10. #10
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Points : 255
    Points
    255
    Par défaut
    Merci bien nuke_y

    Je testerais ca demain ... (avec schnito )
    .: La cosse : il n'y a que ça de vrai :.

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

Discussions similaires

  1. Problème de compilation avec Borland : Direct Draw
    Par Burckel dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 26/09/2005, 18h17
  2. Réponses: 1
    Dernier message: 22/09/2005, 20h46
  3. Problème de Focus
    Par Charette dans le forum Composants VCL
    Réponses: 7
    Dernier message: 14/09/2005, 23h18
  4. problème de focus dans un CEdit
    Par Depteam1 dans le forum MFC
    Réponses: 11
    Dernier message: 08/09/2005, 15h05
  5. [JTextField] Problème de focus
    Par clairette dans le forum Composants
    Réponses: 29
    Dernier message: 22/07/2005, 16h52

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