Bonjour, dans AWT Graphique souvent on rajoute Graphics g. Or dasn le main comment met-on cette argument?
Merci
Bonjour, dans AWT Graphique souvent on rajoute Graphics g. Or dasn le main comment met-on cette argument?
Merci
Salut,
Explique-nous ce que tu veux faire au juste. C'est quoi le main ? La méthode de démarrage d'un programme ? Il n'y a aucune raison d'avoir à changer les arguments de la méthode main(String[] args) (surtout que ça ne fonctionnerait plus si on le faisait), et encore moins avec un argument de type Graphics. A quoi doit te servir cet argument de type Graphics ?
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Oui, tu as raison. Il y a 2 fichiers classes: l'itérateur et la classe d'action
La classe de l'itérateur
L'autre classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 import java.util.Deque; import java.util.LinkedList; public class IterateurSymbole { private final Deque <Code39.Epaisseur> pile; public IterateurSymbole (Code39.Epaisseur E, Code39.Nature N){ pile=new LinkedList<>(); descendre(E); } private void descendre(Code39.Epaisseur E){ Code39.Epaisseur Ecourant = E; while(Code39.Epaisseur.getE() != null){ pile.push(Ecourant); } } public boolean hasNext(){ return !pile.isEmpty(); } public Code39.Epaisseur next(){ Code39.Epaisseur next=pile.pop(); descendre(E); return next.getE(); } }
Sinon transact, je vais suivre ton conseil et faire une classe énum, merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; public class Code39 { public static void main(String[] args){ System.out.println("It's run!"); CodeBarre("0110", g); } enum Epaisseur {LARGE, ETROIT}; Epaisseur epaisseur; enum Nature {BARRE, ESPACE}; Nature nature; public Code39(){this(Epaisseur.ETROIT,Nature.ESPACE);} public Code39(Epaisseur E, Nature N){ this.setE(E); this.setN(N); } public void setE(Epaisseur epaisseur){ this.epaisseur=epaisseur; } public void setN(Nature nature){ this.nature=nature; } public Epaisseur getE(){return this.epaisseur;} public Nature getN(){return this.nature;} //Dessiner le code barre : 0 une barre étroite; 1 un espace large public void CodeBarre(String CB, Graphics g){ int i=0; int n=CB.length(); Epaisseur E=Epaisseur.ETROIT; Nature N=Nature.ESPACE; for(i=0; i<n; i++){ if (CB.charAt(i)==0){ E=Epaisseur.ETROIT; N=Nature.BARRE; } else{ E=Epaisseur.LARGE; N=Nature.ESPACE; } } draw(E,N,g); } public void draw(Epaisseur E, Nature N, Graphics g){ int espace=0; if (E==Epaisseur.ETROIT && N==Nature.BARRE){ //Dessiner une barre étroite g.drawLine(10+espace,10+espace,100,100); } else if(E==Epaisseur.LARGE && N==Nature.BARRE){ //Dessiner une barre large g.drawLine(25+espace,25+espace,100,100); } else if(E==Epaisseur.ETROIT && N==Nature.ESPACE){ //Un espace petit espace=espace+10; } else if(E==Epaisseur.LARGE && N==Nature.BARRE){ //Dessiner un grand espace espace=espace+24; } } public String toString(){ StringBuilder builder=new StringBuilder(); toString(builder, this); return builder.toString(); } private static void toString(StringBuilder builder, Code39 v){ builder.append('('); builder.append(v); builder.append(' '); builder.append(' '); builder.append(')'); } }![]()
Si je comprends bien, tu veux pouvoir dessiner quelque chose à partir d'une classe à toi, qui a une méthode du type draw(Graphics g).
Déjà, tu ne peux pas créer une instance Graphics (ce n'est pas une classe, mais une abstraction). Cela n'a même aucun sens (si on oublie l'impossibilité technique) : une instance de Graphics représente un contexte graphique, pas l'entité résultante (un dessin, une impression, un composant affiché à l'écran, etc.). Il est tout à fait possible d'implémenter sa propre version de classe concrète, mais c'est un travail immense, et probablement inutile, à moins de vouloir faire son propre système visuel, qui n'existerait pas déjà.
Il te faut donc en entrée un élément visuel qui va te fournir une instance de Graphics, qui va te permettre de dessiner dans l'élément visuel.
Par exemple, si on veut dessiner dans une image :
Si le but est de dessiner dans un composant Swing (ou AWT), on ne peut pas procéder comme çà : le dessin est fait dans l'Event Dispatch Thread, mais surtout, le contexte graphique étant recyclé, il faut intervenir au moment ou Swing (ou AWT) dessine le composant en question, donc dans l'une des méthodes de dessin de composant (les méthode du type paint(), paintComponent(), etc.), donc par redéfinition (on peut procéder autrement, mais c'est très complexe, car il faut connaître très précisément le processus, sinon on aura n'importe quoi à l'affichage (des bouts de dessins là où ne veut pas principalement).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 BufferedImage image = new BufferedImage(500,500,BufferedImage.TYPE_INT_ARGB); // on créé une image Graphics2D g = image.createGraphics(); // on demande le contexte graphique de l'image try { // maintenant on peut dessiner dans l'image g.drawLine(10,10,10,10); uneInstance.draw(g); // on peut appeler une méthode d'une classe qu'on a fait soi-même qui va faire le dessin } finally { g.dispose(); // on libère le contexte graphique }
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Partager