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é
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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) ? 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 !
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...
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Bonjour,
- soit tous tes carrés sont des boutons (bof...),
- soit à partir de ton code, tu ajoutes :Ca répond à ta question ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
d'effectuer l'action voulue correspondante au carré cliqué
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Partager