mon probleme : j'ai un GridLayout de 3 cases avec 3 carrés, je veux detecter un clik de souris sur chacun de ses 3 carrés afin d'effectuer l'action voulue correspondante au carré cliqué
Version imprimable
mon probleme : j'ai un GridLayout de 3 cases avec 3 carrés, je veux detecter un clik de souris sur chacun de ses 3 carrés afin d'effectuer l'action voulue correspondante au carré cliqué
un peu de code serait peut etre mieux...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public class CubeFrame extends Frame implements MouseListener{ private Cube modele; public void mousePressed(MouseEvent e) { ??? } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public CubeFrame(Cube c){ super(); modele = c; this.setLayout(new GridLayout(4,4)); this.setBackground(Color.PINK); CubeCanvas haut = new CubeCanvas(this.getModele(),6); haut.addMouseListener(this); this.add(haut); CubeCanvas gauche = new CubeCanvas(this.getModele(),3); gauche.addMouseListener(this); this.add(gauche);
Quel est ton problème exactement ( à moins que tu ne veuilles que l'on fasse tout à ta place :wink: ) ? Sur quoi tu butes ? merci d'être un peu plus explicite.
Pense aux balises [ code ], c'est plus lisible.
en fait t'as quoi dans les cases? elles sont pas vide j'espere !
:tagcode:
Mais pourquoi, pourquoi, pourquoi s'embeter avec un GridLayout alors que 16 Rectangle* faisaient largement l'affaire...
*Pour faire des jeux 2D, pensez Java 2D...
Bonjour,
- soit tous tes carrés sont des boutons (bof...),
- soit à partir de ton code, tu ajoutes :Ca répond à ta question ?Code:
1
2
3
4
5 //dans le constructeur this.addMouseListener(this); //dans MouseClicked System.out.println("Composant : " + this.getComponentAt(e.getPoint());
ou bien rajoute un mouseListener a chacun de tes composant afin
Citation:
d'effectuer l'action voulue correspondante au carré cliqué
Code:
1
2
3
4
5
6
7
8
9
10
11
12 int x = event.getX(); int y = event.getY(); for (Rectange[] line : grid) { for (Rectangle r : line) { if (r.contains(x, y)) { ... repaint(); return; } } }
En supposant bien sur que le composant CubeCanvas laisse passer le clic de la souris a son composant parent (setFocusTransverable() ou qq chose comme ca non ??).Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 int x = event.getX(); int y = event.getY(); int areaCount = getComponentCount(); for (int i = 0 ; i < areaCount ; i++) { Component component = getComponent(i); if (component.contains(x, y)) { CubeCanvas canvas = (CubeCanvas)component; ... repaint(); return; } }