begin process at 2010 02 10 12:33:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Au secours

 > 

aide explication paint (tableaux de Hash)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

aide explication paint (tableaux de Hash)

jeudi 27 mai 2004 à 09:26:34 | aide explication paint (tableaux de Hash)

Bilouz


Bon voilà je viens de choper un pgm sympa style paint, juste pour dessiner et effacer le contenu.
Par contre je ne comprends pas du tout comment fonctionne la classe java.util.Vector. C'est une histoire d'outrepasser cette classe....
Bref si qq un peut m'expliquer ou alors me montrer ou je pourré trouvé un explication....
Merci bcp !!

Bilouz

Voici le code :

import java.applet.*;
import java.awt.*;
import java.util.Vector;

abstract class Forme {
abstract void dessiner(Graphics g);
}

class Dessin {
Graphics g;
Vector listeFormes;
Dessin(Graphics gc) {
g = gc;
listeFormes = new Vector();
}

void ajoute(Forme f) {
listeFormes.addElement(f);
}

void dessiner() {
int n = listeFormes.size();
Forme f;
for(int i=0; i<n; i++) {
f = (Forme) listeFormes.elementAt(i);
f.dessiner(g);
}
}

void effacer() {
listeFormes.removeAllElements();
}
}

class Point {
int x;
int y;

Point(int x1, int y1) {
x = x1;
y = y1;
}
}

class Trace extends Forme {
Color couleur;
Vector listePoints;

Trace(Color c) {
couleur = c;
listePoints = new Vector();
}

void ajoute(Point p) {
listePoints.addElement(p);
}

void ajoute(int x, int y) {
ajoute(new Point(x,y));
}

Point nieme(int n) {
if (listePoints.capacity() < n) return null;
return (Point) listePoints.elementAt(n);
}

int nbPoints() {
return listePoints.size();
}

void dessiner(Graphics g) {
int n = nbPoints();
if(n<=1) return;

g.setColor(couleur);
int x_precedent = nieme(0).x;
int y_precedent = nieme(0).y;

int x,y;

for(int i=1; i<n; i++) {
x = nieme(i).x;
y = nieme(i).y;
g.drawLine(x_precedent, y_precedent, x, y);
x_precedent = x;
y_precedent = y;
}
}
}



public class DessinerV2 extends Applet {
private Dessin dessin;
private Trace tr;

private int x_precedent;
private int y_precedent;
private boolean gomme;
private String figure;
private Color couleur_courrante;
private Button bouton_effacer;
private Choice bouton_figure;
private Choice bouton_couleur;
private Choice taille_gomme;
private String taille;

public void init() {
dessin = new Dessin(getGraphics());

this.setBackground(Color.white);

gomme = false;
figure = "trace";
couleur_courrante = Color.black;

bouton_effacer = new Button("Effacer");
bouton_effacer.setForeground(Color.black);
bouton_effacer.setBackground(Color.lightGray);
this.add(bouton_effacer);


}

public void paint(Graphics gc) {
dessin.dessiner();
}

public boolean mouseDown(Event e, int x, int y) {
if(figure.equals("trace")) {
tr = new Trace(couleur_courrante);
tr.ajoute(x, y);
}

x_precedent = x;
y_precedent = y;
return true;
}

public boolean mouseDrag(Event e, int x, int y) {
Graphics g = this.getGraphics();

{
tr.ajoute(x, y);
g.setColor(couleur_courrante);
g.drawLine(x_precedent, y_precedent, x, y);
x_precedent = x;
y_precedent = y;
}

return true;
}

public boolean mouseUp(Event e, int x, int y) {

Graphics g = this.getGraphics();
g.setColor(couleur_courrante);

{
dessin.ajoute(tr);
}

return true;
}


public boolean action(Event event, Object arg) {
if(event.target == bouton_effacer) {
dessin.effacer();
Graphics g = this.getGraphics();
Rectangle r = this.bounds();
g.setColor(this.getBackground());
g.fillRect(r.x, r.y, r.width, r.height);
return true;
}

else if(event.target == bouton_figure) {
figure = (String) arg;
return true;
}

else if(event.target == taille_gomme) {
taille = (String) arg;
return true;
}

else return super.action(event, arg);
}
}
jeudi 27 mai 2004 à 11:44:21 | Re : aide explication paint (tableaux de Hash)

Twinuts

Membre Club Administrateur CodeS-SourceS
//création d'un vecteur
Vector listeFormes = new Vector();

void ajoute(Forme f) {
listeFormes.addElement(f);
/* Ajout d'un objet f au vecteur, ici il y a indexation des objet en dynamique ctd a chaque appel de "ajoute" ton objet se mettra à la suite des autres sans les écrasé peux importe la taille initial de ton vecteur*/
}

void dessiner() {
//récupération de la taille du vecteur
int n = listeFormes.size();Forme f;
for(int i=0; i<n; i++) {
/*Ici tu récupe un objet de ton vecteur tu le cast et tu le dessine en répétant l'opération jusqu a la fin de ta boucle, le cast est très important il te permet de convertir les données du vecteur, tu passe de java.lang.Object vers abstract Forme*/
f = (Forme) listeFormes.elementAt(i);
f.dessiner(g);
}
}

Si tu désir une vrai explication prend n'importe quel bouquin ou cour sur java et cherche dedans (près du chapitre sur les tableaux (si c pas dans le même))

ou bien cherche sur google...


Cette discussion est classée dans : int, private, effacer, return, precedent


Répondre à ce message

Sujets en rapport avec ce message

Erreur d'execution: java.lang.NullPointerException [ par amjad ] A la compilation d'un projet java3D j'obtient le message d'erreur suivant :Exception in thread "main" java.lang.NullPointerException at javax.vecmath ajouter dans cette table des button (JAVA JTABLE JBUTTON) [ par zarziszita ] salut a toutes le monde mon probleme que j'ai envie ajouter deux button a la fin de table une des button permet ajouter un ligne .le methode main se t Help [ par fredspv ] Que faire avec les erreurs du ptit prog suivant ?public class Nat{ int n; public Nat(int n){ this.n=n; } public int getValue(){ return n; JTable et setValueAt [ par anbanb ] Bonjour a tous je suis en train de créer une jtable mais j ai quelques soucis au niveau de la methode setvalueat .public int getColumnCount() {        JTable éditeur de couleur [ par jc_romeo ] BonjourJe voudrais faire une JTable avec le fait que quand on clique sur une des cases on puisse changer sa couleur de fond.j'ai donc créer la classe: layout et reactualisation... [ par alexglvr ] Bonjour,je suis en train de faire un prg en java avec une interface utilisateur. une JFrame (VisionPG1) contient une TabbedPanel (TP). Cette TabbedPan Pb avec une JTable et getSelctedRow() [ par gyome314 ] Salut les jeunes !Voila mon pb...Dans une interface graphique, je cherche éditer une liste de fichiers sous la forme d'une JTable avec une seule colon javamail et flag [ par titinoosReims ] bonjour, voila mon pbJe souhaite réaliser une boite de réception de messagerie en java. Je possede une classe que j'utilise dans des pages jsp.Cependa probleme de raffraichissement d'image [ par Azdruyel ] Bonjour a tous!Aujourd'hui,un nouveau jour, et donc un nouveau probleme!!!Alors voila, mon truc c'est que j'affiche en fond dans un JPanel une image ( transtyper une fonction [ par myers80 ] Bonjour à tous les développeurs,je débute en java.je souhaite créer une méthode qui me retournera une valeur pouvant être de différents types (ResultS


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,836 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales