Comment je peux dessiner une ligne contenue ou tout un trait dans ma ListenerPa

charmeurga Messages postés 28 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 25 novembre 2011 - 5 août 2011 à 04:38
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 5 août 2011 à 17:06
Comment je peux dessiner une ligne contenue ou tout un trait dans ma ListenerPanel ?
voila ma code a modifier
public class ListenerPanel implements MouseListener {



private Panel panel;



public ListenerPanel(Panel panel){
this.panel = panel;

}




/**
  * Invoked when the mouse enters a component.
  */



public void mousePressed(MouseEvent e){


panel.addPoint(e.getX(), e.getY(),TWA.couleur);
panel.repaint();		
}

7 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 août 2011 à 09:08
Bonjour,

encore une question sur le dessin d'un truc :) Tu utilises java comme paint ??

Tu peux ajouter une liste de points à dessiner dans ton panel et surcharger paintComponent pour qu'il te dessine tes traits avec la méthode g.drawLine(x1, y1, x2, y2)
0
charmeurga Messages postés 28 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 25 novembre 2011
5 août 2011 à 10:03
Bonjour,

Imagine que je doit dessiner tout une circuit sur un matrice de 64*64 ou de 128*128



Pouvez vous julien me simplifiez un peut votre solt°
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 août 2011 à 10:29
L'idéal serait de créer une classe PanelModel qui contient la liste de tous les points à dessiner et leur couleurs.

et tu places une instance de cette classe dans ton panel :

public class PanelModel {

    private List points;

    //Constructeurs et accesseurs

    public void addPoint(PointColore point){
        points.add(points);
    }

}


public class Grille extends JPanel {

    private PanelModel model = new PanelModel();


    public void paintComponents(Graphics g){
       for(PointColore p : model.getPoints()){
           g.setColor(p.getColor());
           g.fillRect(p.getX(), p.getY(), largeur, hauteur);
       }
    }

}


Après, il te faut créer classe PointColore et calculer la hauteur et la largeur du rectangle. Des opérations assez simples.
0
Utilisateur anonyme
5 août 2011 à 11:29
Bonjour

Dans la classe qui gère tes rectangles, utilise un attribut de type java.awt.Rectangle et un attribut de type java.awt.Color, cela évite de réinventer l'eau chaude.

Ta classe devrait plutôt s'appeler PanelListener comme c'est un Listener que tu places sur un Panel. Pour dessiner, il est préférer d'utiliser un canevas (java.awt.Canvas) et de le mettre dans un Panel (AWT), un JPanel (Swing) ou un Composite (SWT) en mode embarqué.

J'ai déjà écrit une sorte d'éditeur qui permet de colorer les cases d'une grille; si tu as le droit d'utiliser du code sous licence GPL, je t'invite à y jeter un coup d'oeil.













T.U.E.R (First Person Shooter créé par Julien Gouesse)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
charmeurga Messages postés 28 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 25 novembre 2011
5 août 2011 à 11:58
Je déjà fais ça , ma problème menon c’est de dessiner tout un ligne ou continument ou par sélection multiple
Voila mon code




import java.awt.Color;
import java.awt.Graphics;
import java.util.List;
import java.awt.*;
import javax.swing.JPanel;
import java.util.ArrayList;

public class Panel extends JPanel {

static int xp;
static int yp;

static Color chan =Color.black;

/**La liste des coordonnées des carrés à dessiner*/
private List  points;
/**La liste des couleurs associées aux points*/
private List<Color> couleurs;

/**
  * Constructeur
  */
public Panel(){
super();
//Initialisation des listes
points = new ArrayList ();
couleurs = new ArrayList <Color>();
}

/**
  * Méthode qui permet d'ajouter un nouveau point
  * appelée dans le mouselistener
  */
public int addPoint(int x, int y, Color couleur){

xp =x;
yp=y;
chan=couleur;
points.add(new Point(x, y));
couleurs.add(couleur);
int i;
i=1;
return i;
}


/**
  * Méthode qui décrit la façon de dessiner les carres
  */

public void paintComponent(Graphics g){
//On dessine le fond normalement
super.paintComponent(g);
//grille
g.setColor(Color.blue);/// couleur grille
int uniteX = getWidth()/TWA.xx;

int uniteY = getHeight()/TWA.yy;
for(int i=0; i<TWA.xx; i++){
g.drawLine(uniteX*i, 0, uniteX*i, getHeight());
g.drawLine(0, uniteY*i, getWidth(), uniteY*i);


}

//Taille d'un carre (xx*yy)
int tailleCarrex = getWidth()/TWA.xx;
int tailleCarrey = getHeight()/TWA.yy;

for(int i=0; i<points.size(); i++){
//Indique qu'on dessine le carre d'une certaine couleur
g.setColor(Color.white);// couleur par default
g.setColor(couleurs.get(i));
//dessin du carré

g.fillRect(
(int)points.get(i).getX()-((int)points.get(i).getX()%tailleCarrex),//x
(int)points.get(i).getY()-((int)points.get(i).getY()%tailleCarrey),//y
tailleCarrex,//largeur
tailleCarrey//hauteur


);

int dimx =TWA.xx-(int)points.get(i).getX()/tailleCarrex;
int dimy =(int)points.get(i).getY()/tailleCarrey;


if (TWA.couleur==Color.orange){ TWA.msf[dimx+1][dimy+1]=1;
TWA.msc[dimx-1][dimy+1]=0;
TWA.mme[dimx-1][dimy+1]=0;
TWA.mdi[dimx-1][dimy+1]=0;
}
else if (TWA.couleur==Color.RED){ TWA.msc[dimx-1][dimy+1]=1;
TWA.msf[dimx-1][dimy+1]=0;
TWA.mme[dimx-1][dimy+1]=0;
TWA.mdi[dimx-1][dimy+1]=0;
//flchhhhhhhhhhhh
g.setColor(Color.black);// couleur flèche
g.drawLine((int)points.get(i).getX()-((int)points.get(i).getX()%tailleCarrex)+10/2, (int)points.get(i).getY()-((int)points.get(i).getY()%tailleCarrey),(int)points.get(i).getX()-((int)points.get(i).getX()%tailleCarrex)+10/2,(int)points.get(i).getY()-((int)points.get(i).getY()%tailleCarrey)+10);
g.drawLine((int)points.get(i).getX()-((int)points.get(i).getX()%tailleCarrex)+10/2,(int)points.get(i).getY()-((int)points.get(i).getY()%tailleCarrey),(int)points.get(i).getX()-((int)points.get(i).getX()%tailleCarrex),(int)points.get(i).getY()-((int)points.get(i).getY()%tailleCarrey)+10/2);
g.drawLine((int)points.get(i).getX()-((int)points.get(i).getX()%tailleCarrex)+10/2,(int)points.get(i).getY()-((int)points.get(i).getY()%tailleCarrey), (int)points.get(i).getX()-((int)points.get(i).getX()%tailleCarrex)+10,(int)points.get(i).getY()-((int)points.get(i).getY()%tailleCarrey)+10/2);



}


else if (TWA.couleur==Color.green){ TWA.mme[dimx-1][dimy+1]=1;
TWA.msc[dimx-1][dimy+1]=0;
TWA.msf[dimx-1][dimy+1]=0;
TWA.mdi[dimx-1][dimy+1]=0;
}
else if (TWA.couleur==Color.white){ TWA.mdi[dimx-1][dimy+1]=1;
TWA.msc[dimx-1][dimy+1]=0;
TWA.mme[dimx-1][dimy+1]=0;
TWA.msf[dimx-1][dimy+1]=0;
} 

int mx =(int)points.get(i).getX()/tailleCarrex;
int my =TWA.yy-(int)points.get(i).getY()/tailleCarrey-1;

 String n= Integer.toString(mx);
    Panel1.xeg.setText(n);
  String n1= Integer.toString(my);
    Panel1.yeg.setText(n1);

int h = (int)points.get(i).getX()-tailleCarrex/2;
int h1 = (int)points.get(i).getY()-tailleCarrex/2;
System.out.println(h+"_"+h1);
System.out.println("["+TWA.mme[dimx-1][dimy+1]+"]");
System.out.println("["+TWA.msf[dimx-1][dimy+1]+"]");
System.out.println("["+TWA.mdi[dimx-1][dimy+1]+"]");
System.out.println("["+TWA.msc[dimx-1][dimy+1]+"]");




}

}
 

}

0
charmeurga Messages postés 28 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 25 novembre 2011
5 août 2011 à 14:16
Pouvez vous m’aidée SVP
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
5 août 2011 à 17:06
Salut

Le mieux serais que tu commences par organiser un peu tous ca dans ta tête avant de commencer ;o) ....
Utilise un pattern MVC cel as y prete tres bien..

Le model devra contenir toutes tes données et ton panel savoir representer l ensemble des donné du model ... ensuite tu integres dans tes listener la modification des données du model ...

A partir de la tu veras que tout te parraitra plus simple à gerer...


GodConan ;o)
0
Rejoignez-nous