Utiliser un mouseClicked() dans un JPanel
kabrice01
Messages postés
1179
Date d'inscription
Statut
Membre
Dernière intervention
-
ElexXVII -
ElexXVII -
Bonjour, comment utiliser un evenement souris comme mouseClick dans un JPanel. J'ai essayé :
Mais il n y a que le System.out.println(2) qui marche, les autres methodes non. Je comprend pas pourquoi. Pouvez vous m'aidez svp.
Les "..." representent des codes (très longs) pas intéressant necessaires de vous les montrer.
Merci
pense à ta vie et pense à l'eternité
public class Pan extends JPanel{
...
...
...
public void paintComponent(Graphics g){
super.paintComponent(g);
...
...
...
super.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println(2);
carre1.changerCouleur(g);
carre1.setTaille(60/2+10, yfen/2, 60);
carre1.dessine(g);
}
});
}
...
...
...
}
}
Mais il n y a que le System.out.println(2) qui marche, les autres methodes non. Je comprend pas pourquoi. Pouvez vous m'aidez svp.
Les "..." representent des codes (très longs) pas intéressant necessaires de vous les montrer.
Merci
pense à ta vie et pense à l'eternité
A voir également:
- Mouseclicked java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
2 réponses
Bonjour,
Est-tu sûr que les autres ne fonctionnent pas ? Que font ces méthodes ?
As-tu pensais à rafraîchir ton affichage ?
Est-tu sûr que les autres ne fonctionnent pas ? Que font ces méthodes ?
As-tu pensais à rafraîchir ton affichage ?
Leostingher
Messages postés
9
Statut
Membre
utilise le Repaint();
Bonjour,
Tu peux utiliser ces éléments depuis ta classe "Fenêtre" puis envoyer les positions x et y a ton Panneau, pour l'affichage :
Classe Fenêtre :
Panel :
PS : Les positions x et y pour l'affichage avec ton JPanel ne sont pas exactement les mêmes que celle recueilli via MousListener, il y'a qque pixel de décalage ( tu peux mettre :
En espérant t'avoir aider !
Tu peux utiliser ces éléments depuis ta classe "Fenêtre" puis envoyer les positions x et y a ton Panneau, pour l'affichage :
Classe Fenêtre :
import java.awt.event.*;
import javax.swing.*;
public class Frame extends JFrame implements MouseListener //tu implémente MouseListener dans ta JFrame
{
Panel pan = new Panel();
{
this.setTitle("Test");
this.setSize(800, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addMouseListener(this);
this.setContentPane(pan);
this.setVisible(true);
pan.repaint();
}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) //Lorsque tu clique avec ta souris, le code suivant est executé
{
System.out.println("Pressed" + e.getX() + " - " + e.getY());
pan.setX(e.getX());
pan.setY(e.getY());//on appelle les méthodes setX et setY de ton Panel en leur envoyer les positions de la souris
}
}
Panel :
import java.awt.*;
import javax.swing.*;
public class Panel extends JPanel
{
int x = 0;
int y = 0;//on déclare les variables x et y
public void paintComponent(Graphics g)
{
// Affichage :
g.fillOval(x, y, 10, 10);
}
public void setX(int pX)
{
x = pX;
this.repaint();
}
public void setY(int pY)
{
y = pY;
this.repaint();
}
}
PS : Les positions x et y pour l'affichage avec ton JPanel ne sont pas exactement les mêmes que celle recueilli via MousListener, il y'a qque pixel de décalage ( tu peux mettre :
g.fillOval(x-15, y-40, 10, 10);pour régler le probleme ;).
En espérant t'avoir aider !