<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="http://forum.ubuntu-fr.org/extern.php?action=feed&amp;tid=1150861&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Forum Ubuntu-fr.org / [Java] Prendre en compte plusieurs touches appuyées. [Résolu]]]></title>
		<link>http://forum.ubuntu-fr.org/viewtopic.php?id=1150861</link>
		<description><![CDATA[Les sujets les plus récents dans [Java] Prendre en compte plusieurs touches appuyées. [Résolu].]]></description>
		<lastBuildDate>Fri, 28 Dec 2012 17:07:05 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[Réponse à&#160;:  [Java] Prendre en compte plusieurs touches appuyées. [Résolu]]]></title>
			<link>http://forum.ubuntu-fr.org/viewtopic.php?pid=12014041#p12014041</link>
			<description><![CDATA[<p>Pour les petits nouveaux qui se demandent comme moi comment gérer plusieurs événements en même temps.</p><p>Voici une réponse que je propose puisque personne ne m&#039;a répondu..</p><p>Créer une liste dans laquelle on stocke les touches appuyées! </p><p>Merci pour toutes ces réponses! ^^&#039;<br />Je me suis senti soutenu.. comme quoi, parfois, il faut se prendre par la main tout seul et avancer. *huhu*<br />J&#039;avoue que sur ce coup là, j&#039;ai été un peu phénophobe. (peur de réfléchir = XD)</p><p>Toutes critiques sur ma méthode sera la bienvenue!</p><br /><p>J&#039;ai réussi à faire planter mon programme quand j&#039;appuie sur toutes les touches de mon clavier..<br />Je choppe tout plein d&#039;exceptions! <img src="http://forum.ubuntu-fr.org/img/smilies/big_smile.png" width="15" height="15" alt="big_smile" /></p><div class="codebox"><pre><code>84 65 90 69 82 73 80 72 66 
84 65 90 69 82 73 80 72 66 
Exception in thread &quot;AWT-EventQueue-0&quot; java.lang.ArrayIndexOutOfBoundsException: -1
	at java.util.ArrayList.elementData(ArrayList.java:338)
	at java.util.ArrayList.remove(ArrayList.java:415)
	at TestPanel$RecepteurClavier.keyReleased(TestPanel.java:159)
	at java.awt.Component.processKeyEvent(Component.java:6350)
	at java.awt.Component.processEvent(Component.java:6166)
	at java.awt.TextComponent.processEvent(TextComponent.java:675)
	at java.awt.TextField.processEvent(TextField.java:588)
	at java.awt.Component.dispatchEventImpl(Component.java:4750)
	at java.awt.Component.dispatchEvent(Component.java:4576)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1895)
...</code></pre></div><p>Remarque: j&#039;ai eu beaucoup de mal à dépasser les quatre touches appuyées?<br />(les numéros sont les valeurs des touches appuyées. )</p>]]></description>
			<author><![CDATA[dummy@example.com (compte supprimé)]]></author>
			<pubDate>Fri, 28 Dec 2012 17:07:05 +0000</pubDate>
			<guid>http://forum.ubuntu-fr.org/viewtopic.php?pid=12014041#p12014041</guid>
		</item>
		<item>
			<title><![CDATA[[Java] Prendre en compte plusieurs touches appuyées. [Résolu]]]></title>
			<link>http://forum.ubuntu-fr.org/viewtopic.php?pid=12010851#p12010851</link>
			<description><![CDATA[<p>Bonjour,</p><p>Comme le titre le suggère, je voudrais prendre en compte plusieurs touches appuyées en java.</p><p>Voici un petit programme que je viens tout juste d&#039;écrire.. il déplace un cercle au centre! ^^</p><p>TestPanel.java (là o`u tout se trouve)</p><div class="codebox"><pre class="vscroll"><code>import java.awt.Frame;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


import java.awt.Panel;

import java.awt.BorderLayout;

public class TestPanel extends Frame{
        static final int dep = 10; //constante pour le déplacement.
        static final long serialVersionUID = 1l; // Mauvaise facon mais j&#039;aime pas les Warnings
        private TextField tf;
        
        private Panneau pan = new Panneau();
       
        public TestPanel(){
                this.setLayout(new BorderLayout()); // Layout
                
                this.setTitle(&quot;Titre de ma fenêtre Test.&quot;);
                
                this.setBackground(Color.gray);
                this.tf = new TextField(); // Un textfield
                this.tf.setEditable(false); // non editable
                this.tf.addKeyListener(new RecepteurClavier()); // auquel on rajoute un recepteur clavier
                this.add(this.tf, BorderLayout.NORTH); // Ajout de ce textfield a la fenetre
                
                
                //this.pan.addKeyListener(new RecepteurClavierPan());
                this.add(this.pan, BorderLayout.CENTER);
                
                //this.pack(); // adaptation de la taille
                
                this.addWindowListener(new WindowAdapter(){ // Permet de fermer la frame
                        public void windowClosing(WindowEvent e){System.exit(0);}
                });
                
                
                
                this.setVisible(true); // affichage
                
                this.setSize(300,300);
        }
        public TextField getTf(){return this.tf;};
        
        public Panneau getPan(){return this.pan;}

        public static void main(String[] args){ 
            TestPanel t = new TestPanel();   
        
            //t.setSize(300,300);
        }
       
        public class RecepteurClavier implements KeyListener{
                /**
                 * Touche enfoncée
                 * @param event
                 */
                public void keyPressed(KeyEvent event){
                        int source = event.getKeyCode();
                        //int source2 = event.getKeyCode();
                        TestPanel testActu = TestPanel.this;
                        /*if((source==KeyEvent.VK_UP)||(source2==KeyEvent.VK_UP)){
                                testActu.getTf().setText(&quot;Haut&quot;);
                                testActu.getPan().setPosY(testActu.getPan().getPosY()-dep);
                        }
                        else if((source==KeyEvent.VK_DOWN)||(source2==KeyEvent.VK_DOWN)){
                                testActu.getTf().setText(&quot;Bas&quot;);
                                testActu.getPan().setPosY(testActu.getPan().getPosY()+dep);
                        }
                        else if((source==KeyEvent.VK_RIGHT)||(source2==KeyEvent.VK_RIGHT)){
                                testActu.getTf().setText(&quot;Droite&quot;);
                                testActu.getPan().setPosX(testActu.getPan().getPosX()+dep);
                        }
                        else if((source==KeyEvent.VK_LEFT)||(source2==KeyEvent.VK_LEFT)){
                                testActu.getTf().setText(&quot;Gauche&quot;);
                                testActu.getPan().setPosX(testActu.getPan().getPosX()-dep);
                        }
                        else if(source==KeyEvent.VK_A){
                                testActu.getTf().setText(&quot;A&quot;);
                        }*/
                        if((source==KeyEvent.VK_UP)){
                                testActu.getTf().setText(&quot;Haut&quot;);
                                testActu.getPan().setPosY(testActu.getPan().getPosY()-dep);
                        }
                        else if((source==KeyEvent.VK_DOWN)){
                                testActu.getTf().setText(&quot;Bas&quot;);
                                testActu.getPan().setPosY(testActu.getPan().getPosY()+dep);
                        }
                        else if((source==KeyEvent.VK_RIGHT)){
                                testActu.getTf().setText(&quot;Droite&quot;);
                                testActu.getPan().setPosX(testActu.getPan().getPosX()+dep);
                        }
                        else if((source==KeyEvent.VK_LEFT)){
                                testActu.getTf().setText(&quot;Gauche&quot;);
                                testActu.getPan().setPosX(testActu.getPan().getPosX()-dep);
                        }
                        else if(source==KeyEvent.VK_A){
                                testActu.getTf().setText(&quot;A&quot;);
                        }
                        testActu.getPan().repaint();
                 }
               
                /**
                 * Touche relachée
                 * @param event
                 */
                 public void keyReleased(KeyEvent event){}
                
                 /**
                  * Cractere tappé
                  * @param event
                  */
                 public void keyTyped(KeyEvent event){}
               
        }
        
        
                    
}   
       </code></pre></div><p>Panneau.java (un panneau sur lequel on affiche notre cercle)</p><div class="codebox"><pre class="vscroll"><code>import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GradientPaint;
import javax.swing.JPanel;
 
public class Panneau extends JPanel {
  private int posX = 0;
  private int posY = 0;

  public void paintComponent(Graphics g){
    //On choisit une couleur de fond pour le rectangle
    Graphics2D g2d = (Graphics2D) g;
    GradientPaint gp1 = new GradientPaint(0, 0, Color.RED, this.getWidth(), this.getHeight(), Color.CYAN, true);
    g2d.setColor(Color.white);
    g2d.setPaint(gp1);
    //On le dessine de sorte qu&#039;il occupe toute la surface
    g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
    //On redéfinit une couleur pour le rond
    g2d.setColor(Color.red);
  
    //On le dessine aux coordonnées souhaitées
    g2d.fillOval(posX, posY, 50, 50);  }

  public int getPosX() {
    return posX;
  }

  public void setPosX(int posX) {
    this.posX = posX;
  }

  public int getPosY() {
    return posY;
  }

  public void setPosY(int posY) {
    this.posY = posY;
  }
}</code></pre></div>]]></description>
			<author><![CDATA[dummy@example.com (compte supprimé)]]></author>
			<pubDate>Fri, 28 Dec 2012 11:40:08 +0000</pubDate>
			<guid>http://forum.ubuntu-fr.org/viewtopic.php?pid=12010851#p12010851</guid>
		</item>
	</channel>
</rss>
