URL: https://linuxfr.org/forums/programmation-java/posts/relier-deux-points Title: relier deux points Authors: ryadus Date: 2004年11月13日T13:34:28+01:00 Tags: Score: 0 Bonjour; J'essaye de programmer un jeu, et j'ai commencé par essayé de relier deux points sur une JFrame avec une droite à l'aide de la souris, mais sa ne marche pas, rien ne s'affiche ou ne se dessine, sa fait des jours que j'essaye de trouver pourquoi mais je n'y arrive pas, peut être que vous pouvez m'aider ou m'orienter, voici le code que j'ai écris : import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; public class relierPoints { £spaces£ £/spaces£public static void main(String args[]){ £spaces£ £/spaces£Fenetre principale = new Fenetre(); £spaces£ £/spaces£principale.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); £spaces£ £/spaces£principale.show(); £spaces£ £/spaces£} } class Fenetre extends JFrame { £spaces£ £/spaces£private Panneau p; £spaces£ £/spaces£public Fenetre() { £spaces£ £/spaces£setSize(600, 600); £spaces£ £/spaces£setLocation(100, 100); £spaces£ £/spaces£setTitle("JEU SIM"); £spaces£ £/spaces£//barre de menu: £spaces£ £/spaces£JMenuBar barremenu = new JMenuBar(); £spaces£ £/spaces£setJMenuBar(barremenu); £spaces£ £/spaces£JMenu joueur = new JMenu("Jeu"); £spaces£ £/spaces£JMenuItem fermer = new JMenuItem("Fermer"); £spaces£ £/spaces£ £spaces£ £/spaces£barremenu.add(joueur); £spaces£ £/spaces£joueur.add(fermer); £spaces£ £/spaces£fermer.addActionListener( £spaces£ £/spaces£new ActionListener(){ £spaces£ £/spaces£public void actionPerformed(ActionEvent e){ £spaces£ £/spaces£System.exit(0); £spaces£ £/spaces£} £spaces£ £/spaces£} £spaces£ £/spaces£); £spaces£ £/spaces£ £spaces£ £/spaces£addMouseListener(new souris()); £spaces£ £/spaces£ £spaces£ £/spaces£Container contenu = getContentPane(); £spaces£ £/spaces£p = new Panneau (); £spaces£ £/spaces£contenu.add(p,"Center"); £spaces£ £/spaces£p.repaint(); £spaces£ £/spaces£} } class Panneau extends JPanel { £spaces£ £/spaces£int [] tab1= new int [6]; £spaces£ £/spaces£int [] tab2= new int [6]; £spaces£ £/spaces£public Panneau(){ £spaces£ £/spaces£tab1[0]=300; tab1[1]=400; tab1[2]=400; tab1[3]=300; tab1[4]=200; tab1[5]=200; £spaces£ £/spaces£tab2[0]=100; tab2[1]=200; tab2[2]=300; tab2[3]=400; tab2[4]=300; tab2[5]=200; £spaces£ £/spaces£} public void paintComponent(Graphics g) { £spaces£ £/spaces£super.paintComponent(g); £spaces£ £/spaces£Graphics2D g2 =(Graphics2D) g; £spaces£ £/spaces£Rectangle2D rect1 =new Rectangle2D.Double(300,100,5,5); £spaces£ £/spaces£Rectangle2D rect2 =new Rectangle2D.Double(400,200,5,5); £spaces£ £/spaces£//Rectangle2D rect3 =new Rectangle2D.Double(400,300,5,5); £spaces£ £/spaces£//Rectangle2D rect4 =new Rectangle2D.Double(300,400,5,5); £spaces£ £/spaces£//Rectangle2D rect5 =new Rectangle2D.Double(200,300,5,5); £spaces£ £/spaces£//Rectangle2D rect6 =new Rectangle2D.Double(200,200,5,5); £spaces£ £/spaces£g2.draw(rect1); £spaces£ £/spaces£g2.draw(rect2); £spaces£ £/spaces£//g2.draw(rect3); £spaces£ £/spaces£//g2.draw(rect4); £spaces£ £/spaces£//g2.draw(rect5); £spaces£ £/spaces£//g2.draw(rect6); £spaces£ £/spaces£} £spaces£ £/spaces£} class souris extends MouseAdapter { £spaces£ £/spaces£private int x1, x2, y1, y2, xx, yy; £spaces£ £/spaces£private int SourisX, SourisY; £spaces£ £/spaces£ £spaces£ £/spaces£public void mouseUp(MouseEvent e){ £spaces£ £/spaces£xx = e.getX(); £spaces£ £/spaces£yy = e.getY(); £spaces£ £/spaces£System.out.println(xx); £spaces£ £/spaces£System.out.println(yy); £spaces£ £/spaces£//si je suis à l'interieur du 1er rectangle alors j'initialise x1 et y1 ou x2 et y2 £spaces£ £/spaces£if ((xx < 300+5+4) & (xx > 300+4) & (yy < 100+5+46) & (yy > 100+46)){ £spaces£ £/spaces£if ((x1 != 302+4) & (y1 != 102+46)) { £spaces£ £/spaces£x2 = 302+4; £spaces£ £/spaces£y2 = 102+46; £spaces£ £/spaces£} £spaces£ £/spaces£else { £spaces£ £/spaces£x1 = 302+4; £spaces£ £/spaces£y1 = 102+46; £spaces£ £/spaces£} £spaces£ £/spaces£} £spaces£ £/spaces£else £spaces£ £/spaces£// la même chose pour le 2eme rectangle £spaces£ £/spaces£if ((xx < 400+5+4) & (xx > 400+4) & (yy < 200+5+46) & (yy > 200+46)){ £spaces£ £/spaces£if ((x1 != 402+4) & (y1 != 202+46)) { £spaces£ £/spaces£x2 = 402+4; £spaces£ £/spaces£y2 = 202+46; £spaces£ £/spaces£} £spaces£ £/spaces£else { £spaces£ £/spaces£x1 = 402+4; £spaces£ £/spaces£y1 = 202+46; £spaces£ £/spaces£} £spaces£ £/spaces£} £spaces£ £/spaces£ £spaces£ £/spaces£} £spaces£ £/spaces£ £spaces£ £/spaces£public void mouseMove(MouseEvent e){ £spaces£ £/spaces£SourisX = e.getX(); £spaces£ £/spaces£SourisY = e.getY(); £spaces£ £/spaces£//repaint(); £spaces£ £/spaces£} £spaces£ £/spaces£ £spaces£ £/spaces£public void paint(Graphics g) { £spaces£ £/spaces£g.setColor(Color.RED); £spaces£ £/spaces£//si (x1 , y1) et (x2 , y2) sont bein les coordonées des deux points alors je trace la droite £spaces£ £/spaces£if (((x1 == 302+4) & (y1 == 102+46)) £spaces£ £/spaces£| ((x1 == 402+4) & (y1 == 202+46))) { £spaces£ £/spaces£if (((x2 == 302+4) & (y2 == 102+46)) £spaces£ £/spaces£| ((x2 == 402+4) & (y2 == 202+46))) { £spaces£ £/spaces£g.drawLine(x1, y1, x2, y2); £spaces£ £/spaces£} £spaces£ £/spaces£} £spaces£ £/spaces£else { £spaces£ £/spaces£//sinon je trace une droite qui n'abouti pas, elle suit seulement le curseur £spaces£ £/spaces£g.drawLine(x1, y1, SourisX, SourisY); £spaces£ £/spaces£} £spaces£ £/spaces£} £spaces£ £/spaces£ } Merci de m'aider d'avance