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

2D Java Discussion :

Problème avec le keyPress


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de stouf()
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Par défaut Problème avec le keyPress
    Bonjour à tous,

    J'ai un petit soucis quand j'exécute ce 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
     
    package myApplication;
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class Main extends JPanel {
     
    	private Graphics2D g2d;
    	private static int w = 100;
    	private static int h = 40;
    	private static Color color = Color.black;
     
    	public void paint(Graphics g) {
     
    		super.paint(g);
     
            g2d = (Graphics2D) g;
     
            g2d.setColor(color);
     
            //Coordonnée x et y + taille w et h
            g2d.fillRect(100, 20, w, h);
     
            addKeyListener(new KeyAdapter() {
    	        public void keyPressed(KeyEvent event) {
    	            if (event.getKeyCode() == event.VK_SPACE) {
    	            	System.out.println("coucou SPACE KEY");
    	            	w = 150;
    	            	h = 80;
    	            	color = Color.red;
    	            	repaint();
    	            }
    	        }
            });
           /* addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent event) {
    	            if (event.getButton() == event.BUTTON1) {
    	            	System.out.println("coucou MOUSE");
    	            	w = 150;
    	            	h = 80;
    	            	color = Color.orange;
    	            	repaint();
    	            }
    	        }
            });*/
        }
     
        public static void main(String[] args) {
     
            JFrame frame = new JFrame("First application Java 2D");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(280, 240);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            frame.add(new Main());     
     
        }
    }
    la fenêtre s'affiche bien mais quand j'appuie sur la barre d'espace il ne se passe rien

    quelqu'un verrait-il le problème ? (c'est surement une bétise )

    Merci

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Euh ton copde est même dangereux dans l'éta où il est, une petite fuite mémoire galopante. Car à chaque repaint tu ajoutes un KeyListener à ton JPanel.
    Ce KeyListener il vaut mieux que tu l'ajoutes à ton JPanel pendant le constructeur.

    Ensuite ton problème vient probablement d'une histoire de focus. Essaie de donner le focus à ton JPanel en appelant sa méthode requestFocus().

  3. #3
    Membre confirmé Avatar de stouf()
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Par défaut
    Merci pour le tuyau, je débute assez en Java2D et c'est pas toujours facile

    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
     
    package myApplication;
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class Main extends JPanel {
     
    	private Graphics2D g2d;
    	private static int w = 100;
    	private static int h = 40;
    	private static Color color = Color.black;
     
    	public Main(){
     
    /*        addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent event) {
    	            if (event.getButton() == event.BUTTON1) {
    	            	System.out.println("coucou MOUSE");
    	            	w = 150;
    	            	h = 80;
    	            	color = Color.orange;
    	            	repaint();
    	            }
    	        }
            });*/
     
            addKeyListener(new KeyAdapter() {
    	        public void keyPressed(KeyEvent event) {
    	            if (event.getKeyCode() == event.VK_SPACE) {
    	            	System.out.println("coucou SPACE KEY");
    	            	w = 150;
    	            	h = 80;
    	            	color = Color.red;
    	            	repaint();
    	            }
    	        }
            });		
    	}
     
    	public void paint(Graphics g) {
     
    		super.paint(g);
     
            g2d = (Graphics2D) g;
     
            g2d.setColor(color);
     
            //Coordonnée x et y + taille w et h
            g2d.fillRect(100, 20, w, h);
        }
     
        public static void main(String[] args) {
     
            JFrame frame = new JFrame("First application Java 2D");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(280, 240);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            frame.requestFocus();
            frame.add(new Main());     
     
        }
    }
    est-ce plus correct ?
    Par contre j'ai toujours pas l'événement qui est lancé, par contre si j'active le listener sur la souris juste au dessus cela fonctionne

    Stouf

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ce n'est pas ta JFrame qui doit faire le requestFocus mais ta classe Main.

  5. #5
    Membre confirmé Avatar de stouf()
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Par défaut
    Ça fonctionne !!

    Merci bcp Sinok

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

Discussions similaires

  1. Problème avec KeyPress pour un textbox
    Par Patmat44 dans le forum C#
    Réponses: 2
    Dernier message: 05/04/2012, 17h58
  2. Ogre/OIS Problème avec keyPressed
    Par tet2brick dans le forum Ogre
    Réponses: 5
    Dernier message: 26/10/2009, 14h23
  3. problème avec un keyPressed
    Par jcy29 dans le forum Langage
    Réponses: 7
    Dernier message: 18/10/2009, 18h04
  4. Problèmes avec keypressed
    Par Baptiste Wicht dans le forum Composants
    Réponses: 9
    Dernier message: 28/11/2005, 20h09
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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