Deplacer un pion en java
Jadorelinfo
Messages postés
51
Date d'inscription
Statut
Membre
Dernière intervention
-
Jadorelinfo Messages postés 51 Date d'inscription Statut Membre Dernière intervention -
Jadorelinfo Messages postés 51 Date d'inscription Statut Membre Dernière intervention -
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 - Télécharger - Jeux vidéo
- Déplacer colonne excel - Guide
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
2 réponses
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) { } }
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...
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...
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
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.