Déplacer un bouton avec les fleches java

Résolu/Fermé
WeWillNeverForget_11.9.2001 - 17 sept. 2012 à 13:39
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 17 sept. 2012 à 14:24
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);


}}


A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
17 sept. 2012 à 13:52
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
WeWillNeverForget_11.9.2001
17 sept. 2012 à 14:01
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
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
17 sept. 2012 à 14:24
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