Déplacer un bouton avec les fleches java [Résolu/Fermé]

Signaler
-
Messages postés
16366
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 juin 2021
-
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

Messages postés
16366
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 juin 2021
2 849
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);
}
}

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?
Messages postés
16366
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 juin 2021
2 849
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) {}
});