Déplacer un bouton avec les fleches java

Résolu
WeWillNeverForget_11.9.2001 -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
j'aimerais savoir comment on peut deplacer un bouton (droite-gauche) à l'aide des fleches en java. j'ai essayé qqch mais cela ne marche pas:

public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}

public void keyPressed(KeyEvent e) {
case KeyEvent.VK_RIGHT:
goRight();
break;
case KeyEvent.VK_LEFT:
goLeft();
break;
case KeyEvent.VK_UP:
jump();
break;

}

static int posX = 40;
static int posY = 750;

public int goRight() {
posX = posX+1;
return posX;
}

public int goLeft() {
posX = posX-1;
return posX;
}

public int jump() {

}
/**
* @param args
*/
public static void main(String[] args) {

JButton bouton = new JButton("bouton",(new ImageIcon("xxx.jpg")));
bouton.setLayout(null);
bouton.setBounds(posX,posY,10,20);

JPanel panneauPrincipal = new JPanel();
panneauPrincipal.add(bouton);

JFrame fenetre = new JFrame();
fenetre.setSize(1680, 1050);
fenetre.getContentPane().add(bouton);

fenetre.add(panneauPrincipal);

fenetre.setLocationRelativeTo(null);
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setVisible(true);

}}

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Exemple :

    import java.awt.Point;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    
    public class Test1
    {
    public static void main(String[] args)
    {
    	JFrame frame = new JFrame();
    	frame.setLayout(null);
    	frame.setSize(800, 800);
    
    	final JButton button = new JButton("Bouton");
    	frame.add(button);
    	button.setBounds(350,380,100,40);
    	button.addKeyListener(new KeyListener()
    	{
    		@Override
    		public void keyPressed(KeyEvent e)
    		{	
    			Point p = button.getLocation();
    			switch (e.getKeyCode())
    			{
    				case KeyEvent.VK_RIGHT:
    					button.setLocation(p.x+1, p.y);
    					break;
    				case KeyEvent.VK_LEFT:
    					button.setLocation(p.x-1, p.y);
    					break;
    				case KeyEvent.VK_UP:
    					button.setLocation(p.x, p.y-1);
    					break;
    				case KeyEvent.VK_DOWN:
    					button.setLocation(p.x, p.y+1);
    					break;
    			}
    		}
    
    		public void keyReleased(KeyEvent e) {}
    		public void keyTyped(KeyEvent e) {}
    		
    	});
    	
    	frame.setLocationRelativeTo(null);
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setVisible(true);
    }
    }
    -1
    1. WeWillNeverForget_11.9.2001
       
      merci beaucoup!
      est-ce-qu'il y aurait un moyen d'augmenter la vitesse de deplacment sans le petit accoup qui survient lorsqu'on augmente la valeur de p.x?
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Je ne suis pas sûr de comprendre ce que tu veux dire par "accoup" mais tu peux essayer d'accumuler les touches pour augmenter la distance à déplacer à chaque fois. Exemple en augmentant de 5%

      button.addKeyListener(new KeyListener()
      {
      	private double dp = 1;
      	
      	@Override
      	public void keyPressed(KeyEvent e)
      	{	
      		Point p = button.getLocation();
      		
      		switch (e.getKeyCode())
      		{
      			case KeyEvent.VK_RIGHT:
      				button.setLocation(p.x+(int) dp, p.y);
      				break;
      			case KeyEvent.VK_LEFT:
      				button.setLocation(p.x-(int) dp, p.y);
      				break;
      			case KeyEvent.VK_UP:
      				button.setLocation(p.x, p.y-(int) dp);
      				break;
      			case KeyEvent.VK_DOWN:
      				button.setLocation(p.x, p.y+(int) dp);
      				break;
      		}
      		
      		dp *= 1.05;
      	}
      
      	@Override
      	public void keyReleased(KeyEvent e)
      	{
      		dp = 1;
      	}
      	
      	public void keyTyped(KeyEvent e) {}
      });
      0