Partage
  • Partager sur Facebook
  • Partager sur Twitter

Interception touche clavier

    23 avril 2015 à 18:10:33

    Bonsoir, j'aimerai que lorsque la touche ENTRER soit pressé , que le texte "ok" s'affiche sur la console mais cela ne marche pas !

    package PersoGame;
    
    import java.awt.*;
    import java.awt.event.*;
    
    import javax.swing.*;
    
    public class mainGame {
    	
    	int CptPlay1 = 0;
    	int CptPlay2 = 0;
    	
    	static JFrame createFen(String titre){
    		JFrame Fen = new JFrame(titre);
    		Fen.setSize(500, 200);
    		return Fen;
    	}
    	
    	void createPanel(JFrame Fen) {
    		JPanel prinPanel = new JPanel();
    		prinPanel.setLayout(new BorderLayout());
    		prinPanel.setBackground(new Color(0x34495e));
    		
    		//POS PLAYER
            JPanel zoneplayer1 = new JPanel();
            zoneplayer1.setPreferredSize(new Dimension(200,200));
            zoneplayer1.setBackground(new Color(0x3498db));
            prinPanel.add(zoneplayer1, BorderLayout.WEST);
            
            JPanel zoneplayer2 = new JPanel();
            zoneplayer2.setPreferredSize(new Dimension(200,200));
            zoneplayer2.setBackground(new Color(0xe74c3c));
            prinPanel.add(zoneplayer2, BorderLayout.EAST);
    		
    		//TEXT PLAYER
    		JLabel wplay1 = new JLabel("Player 1");		
    		JLabel wplay2 = new JLabel("Player 2");
    		wplay1.setForeground(Color.WHITE);
    		wplay2.setForeground(Color.WHITE);
    		
    		//TEXT RESULT
    		JLabel wresul1 = new JLabel(String.valueOf(CptPlay1));
    		JLabel wresul2 = new JLabel(String.valueOf(CptPlay1));
    		wresul1.setForeground(Color.WHITE);
    		wresul2.setForeground(Color.WHITE);
    		
    		//ADD ELEMENT
    		zoneplayer1.setLayout(new GridLayout(2,3));
    		zoneplayer1.add(wplay1);
    		zoneplayer1.add(wresul1);
    		zoneplayer2.setLayout(new GridLayout(2,3));		
    		zoneplayer2.add(wplay2);
    		zoneplayer2.add(wresul2);
    		
    		
    		prinPanel.addKeyListener(new KeyListener() {
    			
    			@Override
    			public void keyTyped(KeyEvent e) {
    				// TODO Auto-generated method stub
    				if(e.getKeyCode() == KeyEvent.VK_ENTER)
    				{
    					System.out.print("ok");
    				}
    			}
    			
    			@Override
    			public void keyReleased(KeyEvent e) {
    				// TODO Auto-generated method stub
    				
    			}
    			
    			@Override
    			public void keyPressed(KeyEvent e) {
    				// TODO Auto-generated method stub
    				
    			}
    		});
    		
    		Fen.setContentPane(prinPanel);
    	}
    	
    	public mainGame(JFrame Fen) {	
    		createPanel(Fen);
    		
    	}
    
    	public static void main(String[] args) {
    		JFrame Fen = createFen("Fast & Furious 8"); // Creation de la fenetre principale
    		new mainGame(Fen);
    		Fen.setVisible(true);
    		Fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    
    }
    



    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      24 avril 2015 à 16:22:54

      Je pense que j'ai eu le même problème. Un moyen de le contourner est d'utiliser le KeyboardFocusManager:

      KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
      
      kfm.addKeyEventDispatcher(new KeyEventDispatcher(){
      	public boolean dispatchKeyEvent(KeyEvent e) {
      		if(e.getID() == KeyEvent.KEY_PRESSED){
      			//Touche pressée
      		}else if(e.getID() == KeyEvent.KEY_RELEASED){
      			//Touche lachée
      		}else if(e.getID() == KeyEvent.KEY_TYPED){
      			//Touche tapée
      		}
      		return false;
      	}
      });
      La méthode dispatchKeyEvent(KeyEvent); est appelée à chaque event.
      • Partager sur Facebook
      • Partager sur Twitter

      Interception touche clavier

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown