addMouseListener pour un Composite
Aujourd'hui, j'ai un problème..
Mon programme de faire une grille 8x8 et de montrer la coord lorsque je clique sur un JButton
.
MAIS je refuse d'utiliser JButton
et j'ai besoin d'aller JPanel
.. Mais mon addMouseListener
ne fonctionne pas donc je ne sais pas comment est-il possible de corriger cela je suis à la recherche depuis 4h.....
package coordboutons;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CoordBoutons extends JFrame {
CoordBoutons() {
super("GridLayout");
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contenant = getContentPane();
contenant.setLayout(new GridLayout(8, 8));
for (int i = 0; i < 8; i++)
for (int j = 0; j < 8; j++)
contenant.add(new CaseEchiquier(i, j));
pack();
setVisible(true);
}
**class CaseEchiquier extends JPanel** {
private int lin, col;
CaseEchiquier(int i, int j) {
lin = i;
col = j;
setPreferredSize(new Dimension(80, 75));
setBackground((i + j) % 2 == 0 ? Color.WHITE : Color.GRAY);
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.out.println((char)('a' + col) + "" + (8 - lin));
}
});
}
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
CoordBoutons coordBoutons = new CoordBoutons();
}
}
- J'ai peut-être raté quelque chose ici, mais
ActionListener
n'est pas unMouseListener
- Tu veux dire
addActionListener
ne fonctionne pas. Ce serait parce que vous ne pouvez pas vous inscrireJPanel
avec ce type d'écouteur - vôtre, essayez d'ajouter un mouselistener pour vos panneaux de droite? mais votre code isc actionListener, il n'y a pas de actionlistener méthode dans un Composite. et je pense que c'est une mauvaise idée d'avoir 64 newMouseListeners, vous avez seulement besoin d'une pour tous les 64 panneaux. ajoutez un mouselistener comme un paramètre dans votre CaseEchiquier(int i, int j, MouseListener m)
- "Je refuse d'utiliser JButton" ... pourquoi?
Vous devez vous connecter pour publier un commentaire.
JPanel
n'a pasActionListener
capacités. Au lieu de cela, vous devez utiliser unMouseListener
Prendre un coup d'oeil à Comment Écrire des Écouteurs de Souris pour plus de détails...
lin
etcol
Le problème est que la méthode
addActionListener
n'existe pas pour un Composite. Vous devez utiliser le port d'écoute pour ce cas (java.awt.event.MouseListener
). DepuisMouseListener
est une interface (et vous ne voulez pas de mettre en œuvre ses méthodes de), vous pouvez utiliser unMouseAdapter
et remplacer uniquement la ou les méthode(s) vous avez besoin, comme ceci: