Deplacer un pion en java
Fermé
Jadorelinfo
Messages postés
51
Date d'inscription
samedi 24 mai 2014
Statut
Membre
Dernière intervention
15 avril 2016
-
30 déc. 2014 à 14:18
Jadorelinfo Messages postés 51 Date d'inscription samedi 24 mai 2014 Statut Membre Dernière intervention 15 avril 2016 - 31 déc. 2014 à 14:36
Jadorelinfo Messages postés 51 Date d'inscription samedi 24 mai 2014 Statut Membre Dernière intervention 15 avril 2016 - 31 déc. 2014 à 14:36
Bonjour,
je n'arrive pas a deplacer un pion dans un damier, car mon damier est constitué de jbutton avec un setIcon pour attacher l'icone.
Si je veux deplacer l'image, je dois deplacer le jbutton aussi et ça laisse un trou blanc , logique , quelqu'un aurait une solution ??
Merçi d'avance.
je n'arrive pas a deplacer un pion dans un damier, car mon damier est constitué de jbutton avec un setIcon pour attacher l'icone.
Si je veux deplacer l'image, je dois deplacer le jbutton aussi et ça laisse un trou blanc , logique , quelqu'un aurait une solution ??
Merçi d'avance.
A voir également:
- Deplacer un pion en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Déplacer une colonne excel - Guide
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
2 réponses
Jadorelinfo
Messages postés
51
Date d'inscription
samedi 24 mai 2014
Statut
Membre
Dernière intervention
15 avril 2016
1
Modifié par blux le 31/12/2014 à 14:37
Modifié par blux le 31/12/2014 à 14:37
Je poste mon code pour que vous y voyez plus clair.
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Paint; import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Dames extends JFrame implements MouseMotionListener,MouseListener { private int point; private int dx, dy; private JButton[] cases=new JButton[64]; private JPanel pan=new JPanel(); private Icon iconRecord=new ImageIcon(); private Icon pionNoir=new ImageIcon("pionNoir.png"); private Icon pionBlanc=new ImageIcon("pionBlanc.png"); private Icon pionNoir2=new ImageIcon("pionNoir1.jpg"); private ImageIcon coco= new ImageIcon("pionNoir.png"); private JLabel label=new JLabel(coco); private final Point pos=new Point(); public Dames() { this.setTitle("Jeu de dames"); this.setSize(660, 680); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setVisible(true); this.getContentPane().add(pan); //addMouseMotionListener(this); pan.setLayout(null); for (int i=0; i<cases.length;i++) { cases[i]=new JButton(); label.addMouseListener(this); label.addMouseMotionListener(this); cases[i].addMouseMotionListener(this); cases[i].addMouseListener(this); pan.add(cases[i]); pan.add(label); } for (int posY=0; posY<641; posY+=80) { for (int pos=0; pos<64; pos++) { if (posY==0 && pos%2!=0 && (pos>=0 && pos<=7)) { cases[pos].setIcon(pionBlanc); } if (posY==80 && pos%2==0 && (pos>7 && pos<=15)) { cases[pos].setIcon(pionBlanc); } if (posY==160 && pos%2!=0 && (pos>=16 && pos<=23)) { cases[pos].setIcon(pionBlanc); } if (posY==480 && pos%2==0 && (pos>=40 && pos<=47)) { cases[pos].setIcon(pionNoir); } if (posY==560 && pos%2!=0 && (pos>47 && pos<=55)) { cases[pos].setIcon(pionNoir); } if (posY==640 && pos%2==0 && (pos>55 && pos<=63)) { cases[pos].setIcon(pionNoir); } } } int j=0; for (int y=0; y<600; y+=80) { for (int x=0; x<600; x+=80) { cases[j].setBounds(x, y, 80, 80); if (y==0 ||y==160 || y==320 || y==480 || y==640){ if (j%2==0) { cases[j].setBackground(Color.YELLOW); } else{ cases[j].setBackground(Color.BLACK); } } else if (y==80 || y==240 ||y==400 || y==560){ if (j%2==0) { cases[j].setBackground(Color.BLACK); } else cases[j].setBackground(Color.yellow); } j++; } } } public void mouseMoved(MouseEvent e) { dx=e.getX(); dy=e.getY(); for (int i=0; i<cases.length;i++) { if (e.getSource()==cases[i]) { System.out.println("gogo :"+i); } } } public void mouseDragged(MouseEvent e) { for (int i=0; i<cases.length;i++) { if (e.getSource()==cases[i]) { System.out.println("la case est"+i); iconRecord=cases[i].getIcon(); //cases[i].setLocation(cases[i].getX()+e.getX()-pos.x-dx, cases[i].getY()+e.getY()-pos.y-dy); //cases[i].setIcon(null); } } } public void mousePressed(MouseEvent ee) { for (int i=0; i<cases.length; i++) { } //System.out.println("xxxx :"+ e.getX()); } public void mouseClicked(MouseEvent ev) { //System.out.println("clique a "+ e.getX()); } public void mouseReleased(MouseEvent e) { //pos.setLocation(e.getX(), e.getY()); int posX=e.getX(); int posY=e.getY(); for (int i=0; i<cases.length; i++) { if (e.getSource()==cases[i]) { System.out.println("the case is "+i); cases[i].setIcon(iconRecord); } } } public void mouseEntered(MouseEvent e) { for (int i=0; i<cases.length; i++) { } } public void mouseExited(MouseEvent e) { } }
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
30 déc. 2014 à 15:03
30 déc. 2014 à 15:03
Bonjour,
Je n'ai pas regardé le code, mais il faut séparer la partie visuelle de la partie métier.
Le JButton doit être associé à un objet Pion, et c'est l'objet Pion qui se déplace d'un JButton à un autre, mais le JButton n'a pas à se déplacer...
Je n'ai pas regardé le code, mais il faut séparer la partie visuelle de la partie métier.
Le JButton doit être associé à un objet Pion, et c'est l'objet Pion qui se déplace d'un JButton à un autre, mais le JButton n'a pas à se déplacer...
Jadorelinfo
Messages postés
51
Date d'inscription
samedi 24 mai 2014
Statut
Membre
Dernière intervention
15 avril 2016
1
30 déc. 2014 à 15:15
30 déc. 2014 à 15:15
merçi pour ta reponse kx, donc c'est impossible de deplacer une image en java?? je suis obligé de creer une classe pion que j'insere dans mon code?
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
>
Jadorelinfo
Messages postés
51
Date d'inscription
samedi 24 mai 2014
Statut
Membre
Dernière intervention
15 avril 2016
30 déc. 2014 à 18:00
30 déc. 2014 à 18:00
Pour moi ça n'a pas de sens de "déplacer l'image" et encore moins déplacer le JButton. En Java ce que tu fais c'est passer d'un état à un autre, dans ton cas, j'affiche l'image sur un JButton puis je la masque, et inversement. Déplacer le pion c'est donc masquer l'image du JButton où le pion état à l'état initial, et afficher l'image sur le JButton d'arrivée du pion. Cela met donc en jeu deux JButton qui restent au même endroit, il n'y a pas de JButton qui se déplacent sur la JFrame...
Jadorelinfo
Messages postés
51
Date d'inscription
samedi 24 mai 2014
Statut
Membre
Dernière intervention
15 avril 2016
1
31 déc. 2014 à 13:53
31 déc. 2014 à 13:53
merçi kx, c'est deja un peu plus clair dans ma tete, mais j'aurai une autre question, quand j'utilise les methodes getX() et getY() je recupere des nombres negatifs, je pense que c'est du au fait que chaque composant est un pan a lui seul, comment je pourrais remedier a un tel probleme??
Merçi d'avance
Merçi d'avance
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
>
Jadorelinfo
Messages postés
51
Date d'inscription
samedi 24 mai 2014
Statut
Membre
Dernière intervention
15 avril 2016
31 déc. 2014 à 14:28
31 déc. 2014 à 14:28
Pour ça il faut regarder dans la documentation : java.awt.event.MouseEvent
Puisque la position est relative à la source, les valeurs peuvent bien sûr être négatives.
Returns the horizontal x (vertical y) position of the event relative to the source component.
Puisque la position est relative à la source, les valeurs peuvent bien sûr être négatives.
Jadorelinfo
Messages postés
51
Date d'inscription
samedi 24 mai 2014
Statut
Membre
Dernière intervention
15 avril 2016
1
31 déc. 2014 à 14:36
31 déc. 2014 à 14:36
merçi encore une fois kx, je vais essayer de me debrouiller avec toutes ces infos.
Bonne journée et surtout bonne année
Bonne journée et surtout bonne année