JAVA probleme de Key Listener qui répond pas

Bonjour,

ça ne réagit pas lorsque j'appuie sur les touches
qu'est ce qu'il manque?
meci de l'aide


import javax.swing.JPanel;
import javax.swing.JApplet;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
 
import javax.swing.JButton;
 
public class client extends JApplet implements KeyListener{
 
	private JPanel jContentPane = null;
	private JButton left = null;
	private JButton right = null;
 
	/**
	 * This method initializes left	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getLeft() {
		if (left == null) {
			left = new JButton();
		}
		return left;
	}
 
	/**
	 * This method initializes right	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getRight() {
		if (right == null) {
			right = new JButton();
		}
		return right;
	}
 
	
	public client() {
		super();
	}
 
	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	public void init() {
		this.setSize(300, 200);
		this.setContentPane(getJContentPane());
		this.addKeyListener(this);
	}
 
	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new FlowLayout());
			jContentPane.add(getLeft(), null);
			jContentPane.add(getRight(), null);
		}
		return jContentPane;
	}
 
	public void keyPressed(KeyEvent e) {
		System.out.println("key pressed");
		int keyCode = e.getKeyCode();
		if (keyCode == e.VK_LEFT) {
			System.out.println("left");
			/*try {
				servo.setPosition(0, servo.getPosition(0) + 4);
			} catch (PhidgetException e1) {
				e1.printStackTrace();
			}*/
			left.setSelected(true);
		}
		if (keyCode == e.VK_RIGHT) {
			System.out.println("right");
			/*try {
				servo.setPosition(0, servo.getPosition(0) - 4);
			} catch (PhidgetException e1) {
				e1.printStackTrace();
			}*/
			right.setSelected(true);
		}
	}
 
	public void keyReleased(KeyEvent e) {
		
	}
 
	public void keyTyped(KeyEvent e) {
		
	}
 
}
Configuration: Windows XP
Firefox 2.0.0.12

2 réponses

  1. ok j'ai suivi le conseil

    mais toujours rien, lorsque j'appuie sur le clavier rien ne se passe

    public class client extends JApplet implements KeyListener{
    
    	private JPanel jContentPane = null;
    	private JButton left = null;
    	private JButton right = null;
    	
    	private JButton getLeft() {
    		if (left == null) {
    			left = new JButton();
    			left.setText("LEFT");
    			left.setName("left");
    			left.addActionListener(new java.awt.event.ActionListener() {
    				public void actionPerformed(java.awt.event.ActionEvent e) {
    					System.out.println("turn left");
    				}
    			});
    		}
    		return left;
    	}
    
    	
    	private JButton getRight() {
    		if (right == null) {
    			right = new JButton();
    			right.setText("RIGHT");
    			right.setName("right");
    		}
    		return right;
    	}
    
    	
    	public client() {
    		super();
    		this.addKeyListener(this);
    		getJContentPane().addKeyListener(this);
    	}
    
    	
    	public void init() {
    		this.setSize(300, 200);
    		this.setContentPane(getJContentPane());
    		this.addKeyListener(this);
    		getJContentPane().addKeyListener(this);
    	}
    
    	
    	private JPanel getJContentPane() {
    		if (jContentPane == null) {
    			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
    			gridBagConstraints1.insets = new Insets(5, 3, 169, 83);
    			gridBagConstraints1.gridy = 0;
    			gridBagConstraints1.gridx = 1;
    			GridBagConstraints gridBagConstraints = new GridBagConstraints();
    			gridBagConstraints.insets = new Insets(5, 83, 169, 2);
    			gridBagConstraints.gridy = 0;
    			gridBagConstraints.gridx = 0;
    			jContentPane = new JPanel();
    			jContentPane.setLayout(new GridBagLayout());
    			jContentPane.add(getLeft(), gridBagConstraints);
    			jContentPane.add(getRight(), gridBagConstraints1);
    		}
    		return jContentPane;
    	}
    
    	public void keyPressed(KeyEvent e) {
    		System.out.println("key pressed");
    		int keyCode = e.getKeyCode();
    		if (keyCode == e.VK_LEFT) {
    			System.out.println("left");
    			/*try {
    				servo.setPosition(0, servo.getPosition(0) + 4);
    			} catch (PhidgetException e1) {
    				e1.printStackTrace();
    			}*/
    			left.setSelected(true);
    		}
    		if (keyCode == e.VK_RIGHT) {
    			System.out.println("right");
    			/*try {
    				servo.setPosition(0, servo.getPosition(0) - 4);
    			} catch (PhidgetException e1) {
    				e1.printStackTrace();
    			}*/
    			right.setSelected(true);
    		}
    	}
    
    	public void keyReleased(KeyEvent e) {
    		
    	}
    
    	public void keyTyped(KeyEvent e) {
    		
    	}
    
    }
    
    0
    1. setFocusable(true); sur ton jpanel ;-)
      0
  2. inverse les code de keytyped et keypressed, il me semble que ton pb vient de là et dans ton constructeur ajoute

    this.addKeyListener(this); // après super()

    ou alors appel init() dans ton constructeur

    voila bon courage

    tchû
    0