Deplacement d,un bouton a l'aide de la sourit
Résolu
manoa21
Messages postés
9
Statut
Membre
-
manoa21 Messages postés 9 Statut Membre -
manoa21 Messages postés 9 Statut Membre -
Bonjour,
J'ai un problème, je voudrai déplacer un bouton a l'aide de la sourit. le bouton se déplace mais il ne suit pas le curseur, en plus le bouton prend deux position. j'ai utilise MouseMotionListener pour prendre la position du curseur dans la fenêtre. Voici ci-dessous le code que j'ai programmer. Je vous prie de m'aider car j'ai tant besoin de ce travail> merci d'avance.
J'ai un problème, je voudrai déplacer un bouton a l'aide de la sourit. le bouton se déplace mais il ne suit pas le curseur, en plus le bouton prend deux position. j'ai utilise MouseMotionListener pour prendre la position du curseur dans la fenêtre. Voici ci-dessous le code que j'ai programmer. Je vous prie de m'aider car j'ai tant besoin de ce travail> merci d'avance.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Fenetre extends JFrame implements MouseMotionListener{
private int x=250;
private int y=400;
public JButton b=new JButton("bouton");
/**
*
*/
private static final long serialVersionUID = 1L;
public Fenetre(){
super();
this.setTitle ("Carte des pôles et des Zéros");
this.setSize(800,600);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cont= getContentPane();
cont.setLayout(null);
b.setBounds(40,10, 100, 20);
cont.add((Component) b);
b.setBackground(Color.RED);
b.addMouseMotionListener(new MouseMotionListener(){
@Override
public void mouseDragged(MouseEvent j) {
// TODO Auto-generated method stub
x = j.getX();
y = j.getY();
b.setLocation(x,y);
}
@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
);
this.setVisible(true);
}
}
import javax.swing.*;
public class Corps {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame fen=new Fenetre();
fen.setVisible(true);
}
}
A voir également:
- Deplacement d,un bouton a l'aide de la sourit
- Mes deplacement - Guide
- Diagnostic bouton photo - Accueil - Outils
- Comment faire une capture d'écran sur un samsung sans bouton ? - Guide
- Bouton shift pc - Forum Jeux vidéo
- Comment débloquer un bouton enfoncé - Forum Samsung
1 réponse
Pour ce que tu veux faire, il n'y a pas de raison que la classe Fenetre implémente MouseMotionListener, d'autant plus que tu ne définis pas ses méthodes...
Sinon, voici une version qui fonctionne de ton code :
Sinon, voici une version qui fonctionne de ton code :
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Fenetre extends JFrame
{
private static final long serialVersionUID = 1L;
private int x=250;
private int y=400;
public final JButton b;
public Fenetre()
{
setTitle("Carte des pôles et des Zéros");
setSize(800,600);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
b=new JButton("bouton");
b.setBounds(40,10, 100, 20);
b.setBackground(Color.RED);
b.addMouseMotionListener(new MouseMotionListener()
{
private int dx,dy;
public void mouseDragged(MouseEvent e)
{
x += e.getX()-dx;
y += e.getY()-dy;
b.setLocation(x,y);
}
public void mouseMoved(MouseEvent e)
{
dx = e.getX();
dy = e.getY();
}
});
add(b);
setVisible(true);
}
public static void main(String...args)
{
new Fenetre();
}
}
Ou alors, en modifiant le MouseMotionListener :
public void mouseDragged(MouseEvent e) { b.setLocation(b.getX()+e.getX()-dx, b.getY()+e.getY()-dy); }Avec cette dernière solution, les variables x et y ne servent plus à rien...
J'ai essayé ce que vous m'avez suggéré hier et ça a marché ! Je vous remercie par ce que votre solution m'a tant aidé! Ce problème est résolu mais j'ai un nouveau problème concernant encore ce sujet : ce que nous avons fait c'est qu'on a placé le bouton dans une fenêtre qui hérite de JFrame mais si on utilise une autre classe qui hérite du JPanel en utilisant la méthode « paintComponent(Graphics g) » le bouton se déplace mais les autres positions que ce bouton a pris apparait encore ! En plus, si on relâche le souris et on glisse à nouveau le bouton le bouton prend la position initiale pour se déplacé.
Voici le code que j'ai fait ! Merci d'avance et encore merci de votre solution du dessus!
import java.awt.Color; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import javax.swing.JButton; import javax.swing.JFrame; public class Fenetre extends JFrame { private static final long serialVersionUID = 1L; public static JButton b,c; public Fenetre() { setTitle("Carte des pôles et des Zéros"); setSize(800,600); setLocationRelativeTo(null); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(null); setVisible(true); } public static void main(String...args) { Fenetre fen = new Fenetre(); fen.setContentPane(new Panneau()); fen.repaint(); } }et voici ci dessous le code de JPanel
import java.awt.Color; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import javax.swing.*; public class Panneau extends JPanel{ /** * */ private static final long serialVersionUID = 1L; public static JButton pole1; public Panneau(){ } public void paintComponent(Graphics g){ pole1=new JButton("bouton"); pole1.setBounds(100,240, 10, 10); pole1.setBackground(Color.RED); pole1.addMouseMotionListener(new MouseMotionListener() { private int dx,dy; public void mouseDragged(MouseEvent e) { if (((pole1.getX()+e.getX()-dx)>=35)&&((pole1.getX()+e.getX()-dx)<375)&&((pole1.getY()+e.getY()-dy)>=50)&&((pole1.getY()+e.getY()-dy)<390) ) { pole1.setLocation(pole1.getX()+e.getX()-dx, pole1.getY()+e.getY()-dy); } } public void mouseMoved(MouseEvent e) { dx = e.getX(); dy = e.getY(); } }); add(pole1); } }