Déplacer un bouton avec les fleches java
Résolu
WeWillNeverForget_11.9.2001
-
KX Messages postés 19031 Statut Modérateur -
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);
}}
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
-
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); } }-
-
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) {} });
-