Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2006 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Probleme de addActionListener [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme de addActionListener [résolu]

n°920834
myeve
Posté le 12-12-2004 à 11:57:32  profilanswer
 

Bonjour, je suis debutante en java, je voudrais qu'en cliquant sur un bouton de ma fenetre, il me créé un rectangle et me l'affiche. Voici la structure de mon programme:  
 

Code :
  1. class Fenetre extends Frame {
  2.    
  3.     Fenetre(){
  4.         super ("Fenetre" );
  5.         setSize(800, 600);
  6.        
  7.         //Traitement de la fermeture de la fenetre  
  8.         addWindowListener( new WindowAdapter(){
  9.             public void windowClosing(WindowEvent e){
  10.                 System.exit(0);
  11.             }
  12.         });
  13.        
  14.         /* Bordure de la fenetre */
  15.         setLayout(new BorderLayout());
  16.        
  17.         /* Partie centrale, Canvas */
  18.         MonCanvas d1 = new MonCanvas();
  19.         add("Center",d1);
  20.        
  21.         /* Panel du bas de la fenetre */
  22.         Panel p = new Panel();
  23.         add("South",p);
  24.         //Bouton quit  
  25.         Button quit = new Button("Quitter" );
  26.         p.add(quit);
  27.         quit.addActionListener(new Ecouteur2());
  28.         //Bouton rectangle  
  29.         Button rectangle = new Button("Rectangle" );
  30.         p.add(rectangle);
  31.         rectangle.addActionListener(new Ecouteur3());
  32.         //Fenetre visible  
  33.         setVisible(true);
  34.     }
  35.    
  36.     public static void main( String args[] ) {
  37.             Fenetre f = new Fenetre();
  38.      }
  39. }
  40. class Rectangle implements Dessinable {
  41.    
  42.     int longueur,largeur;
  43.    
  44.     //interface Dessinable  
  45.     public void dessine(Graphics g){
  46.         g.drawRect(100, 50 , 100 , 50);
  47.    }
  48. }
  49. interface Dessinable {
  50.     public void dessine(Graphics g);
  51. }
  52. class MonCanvas extends Canvas{
  53.    
  54.     MonCanvas(){
  55.         super();
  56.     }
  57.    
  58.     private Vector memoire = new Vector(); // constructeur  
  59.     public void addelement(Dessinable d) {
  60.         memoire.add(d);
  61.     }
  62.  
  63.     public void paint(Graphics g){
  64.        
  65.         //on dessine les objets  
  66.         int index = 0;
  67.         while(index < memoire.size()) {
  68.             //System.out.println(memoire.elementAt(index));  
  69.             ((Dessinable)memoire.elementAt(index)).dessine(g);
  70.             index++;
  71.         }
  72.     }
  73. }
  74.        
  75. class Ecouteur2 implements ActionListener {
  76.     public void actionPerformed(ActionEvent e){
  77.         System.exit(0);
  78.     }
  79. }
  80. class Ecouteur3 implements ActionListener {
  81.     public void actionPerformed(ActionEvent e){
  82.         memoire.addelement(new Rectangle(30,30));
  83.         repaint();
  84.     }
  85. }


Or je n'arrive pas a avoir l'affichage du rectangle depuis ce bouton 'Ecouteur3'...  
 
Quelqu'un pourrait il m'aider ?


Message édité par myeve le 12-12-2004 à 23:12:50
mood
Publicité
Posté le 12-12-2004 à 11:57:32  profilanswer
 

n°920892
R3g
fonctionnaire certifié ITIL
Posté le 12-12-2004 à 12:41:32  profilanswer
 

Et t'as pas des erreurs de compilation avec ça ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°920893
myeve
Posté le 12-12-2004 à 12:42:28  profilanswer
 

ben non pourquoi ca va pas du tout ?

n°920895
R3g
fonctionnaire certifié ITIL
Posté le 12-12-2004 à 12:44:20  profilanswer
 

j'sais pas mais c'est moche et pas facile à comprendre. Tu le sors d'où memoire dans ton Ecouteur3 ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°920900
myeve
Posté le 12-12-2004 à 12:47:30  profilanswer
 

je sais que ca doit etre moche, c pour cela que je demande eds conseils, je suis un peu perdue...
 
Ba en fait pour 'memoire', je cherche a appeler mon vector pour qu'il me stocke mon element..
 

n°920907
the real m​oins moins
Posté le 12-12-2004 à 13:00:06  profilanswer
 

perso je trouve pas ça si moche, y'a même un truc qui me parait assez finau pour une débutante, avec l'interface Dessinable ! Et c'est pas WhatDe notre grand spécialiste es-java qui me contredire, tu peux lui demander !
 
le problème - à vue de nez - c'est ton appel de repaint(), j'crois que c'est un truc à te prendre des coups de pelle à clou -  à confirmer.
 
t'as essayé de mettre un bete System.out.print("pouet" ) dans ton ecouteur3? ou d'utiliser un debugger?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°920922
myeve
Posté le 12-12-2004 à 13:07:01  profilanswer
 

oui si je mets un System.out.print("pouet" ); ca marche tres bien il me l'affiche dans l'output.
 
Mais tu as raison mon repaint() je faisais ca en test ca sert a rien je pense..
Le truc c'est que le rectangle que je demande a aficher dans mon 'ecouteur3' ne s'affiche pas alors que si je mets "d1.addelement(new Rectangle(30,30));" en dessous de "add("Center",d1);" ca fonctionne tres bien.
 
C'es dans la partie ecouteur3 que ca ne focntionne pas.
Et si je mets "d1.addelement(new Rectangle(30,30));" dans mon 'ecouteur3', il ne veut pas --> 'cannot find symbol'

n°920928
the real m​oins moins
Posté le 12-12-2004 à 13:10:58  profilanswer
 

ben normal, d1 est local au constructeur de ta 1ere classe.
non, le probleme c'est uniquement le repaint, mais je ne sais plus ce qu'il faut faire à place.
demande a whatde [:icon12]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°920937
Lam's
Profil: bas.
Posté le 12-12-2004 à 13:16:36  profilanswer
 

the real moins moins a écrit :

perso je trouve pas ça si moche, y'a même un truc qui me parait assez finau pour une débutante, avec l'interface Dessinable ! Et c'est pas WhatDe notre grand spécialiste es-java qui me contredire, tu peux lui demander !


C'est clair. Je sais pas ce que branle WhatDe, il faudrait lui envoyer un Message Perso pour qu'il vienne sur ce topic pour résoudre les problème d'exécution du code, vu que c'est le seul qui maîtrise le Java par ici.  
 
Mais le dimanche, il a pas ses entraînements de pompier volontaire ? Ou bien il a sport ?

n°920939
R3g
fonctionnaire certifié ITIL
Posté le 12-12-2004 à 13:17:57  profilanswer
 

myeve a écrit :


Ba en fait pour 'memoire', je cherche a appeler mon vector pour qu'il me stocke mon element..

dans ta classe MonCanvas tu as fais une méthode addElement, et après tu accède directement au Vector (private qui plus est) sans utiliser cette méthode... c'est assez bizarre.
Sinon +1 avec -- pour l'interface Dessinable. Je me replonge dans ton code, j'espere que WhatDe passera par ici il pourra surement t'aider.


---------------
Au royaume des sourds, les borgnes sont sourds.
mood
Publicité
Posté le 12-12-2004 à 13:17:57  profilanswer
 

n°920946
R3g
fonctionnaire certifié ITIL
Posté le 12-12-2004 à 13:24:04  profilanswer
 

N'empeche je comprends toujours pas comment tu peux accéder à memoire depuis un Ecouteur3...


---------------
Au royaume des sourds, les borgnes sont sourds.
n°920950
myeve
Posté le 12-12-2004 à 13:27:15  profilanswer
 

oui je suis d'accord, je ne peux surement pas acceder a memoire dans mon Ecouteur3, mais comment utiliser le vecteur pour stocker mon rectangle afin de l'afficher ?
 
Sinon j'ai mis public Vector memoire = new Vector(); dans ma class 'MonCanvas' et ca ne change rien..

n°920953
the real m​oins moins
Posté le 12-12-2004 à 13:35:09  profilanswer
 

R3g a écrit :

N'empeche je comprends toujours pas comment tu peux accéder à memoire depuis un Ecouteur3...

t'as acces au membres privés d'une classe depuis une inner class..


Message édité par the real moins moins le 12-12-2004 à 13:35:17

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°920959
R3g
fonctionnaire certifié ITIL
Posté le 12-12-2004 à 13:39:06  profilanswer
 

the real moins moins a écrit :

t'as acces au membres privés d'une classe depuis une inner class..

Mais Ecouteur3 n'est pas une inner class, ou c'est mes yeux qui deconnent ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°920964
Lam's
Profil: bas.
Posté le 12-12-2004 à 13:45:39  profilanswer
 

R3g a écrit :

Mais Ecouteur3 n'est pas une inner class, ou c'est mes yeux qui deconnent ?


Tu confonds inner et nested. Une nested class (ou member class) est "inner", tout comme le sont les "anonymous" et "local" classes.
Une classe définie dans le même fichier qu'une classe "publique" verra donc ses membres private. Il me semble.


Message édité par Lam's le 12-12-2004 à 13:46:34
n°920966
patachou
Posté le 12-12-2004 à 13:48:17  profilanswer
 

Bon pour ce qui est du repaint () en general il faut faire un validate () ou un revalidate () pour demander à redessiner...

n°920969
the real m​oins moins
Posté le 12-12-2004 à 13:53:38  profilanswer
 

Lam's a écrit :

Tu confonds inner et nested. Une nested class (ou member class) est "inner", tout comme le sont les "anonymous" et "local" classes.
Une classe définie dans le même fichier qu'une classe "publique" verra donc ses membres private. Il me semble.

pfiou, j'ai eu peur un moment, je retombais plus sur le nom "nested", du coup j'etais plus sur de moi [:joce]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°920970
R3g
fonctionnaire certifié ITIL
Posté le 12-12-2004 à 13:54:30  profilanswer
 

Ah parce que tout ça c'est le même fichier ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°920980
myeve
Posté le 12-12-2004 à 14:05:46  profilanswer
 

oui tout est dans le meme fichier..
je verrais ensuite pour separer..

n°920984
Profil sup​primé
Posté le 12-12-2004 à 14:10:32  answer
 

Et écrire un code qui compile déjà, ça te branche pas ?

n°920986
myeve
Posté le 12-12-2004 à 14:13:59  profilanswer
 

ba en fait ca compile et ca se lance, j'ai retiré qq trucs qui ne me paraissaient pas necessaires pour mon probleme, je voulais pas vous embeter avec le code complet..
Je pensais que ca servirait a rien...

n°920990
the real m​oins moins
Posté le 12-12-2004 à 14:25:47  profilanswer
 

alerim a écrit :

Et écrire un code qui compile déjà, ça te branche pas ?

et arreter de rouler des mécaniques, ça te branche? ça compile.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°921033
myeve
Posté le 12-12-2004 à 15:54:24  profilanswer
 

Désolé je suis un peu perdue, si je mets :
 

Code :
  1. Rectangle r2 = new Rectangle(20,10);
  2. d1.addelement(r2);


 
dans mon constructeur 'Fenetre', en dessous de :

Code :
  1. MonCanvas d1 = new MonCanvas(); 
  2. add("Center",d1);


 
Il m'affiche bien le rectangle, mais si mets cette partie de code dans :

Code :
  1. public static void main( String args[] ) { 
  2.    Fenetre f = new Fenetre(); 
  3. }


 
Il me met en erreur:

Code :
  1. Compiling 1 source file to C:\Documents and Settings\Administrateur\JavaApplication1\build\classes
  2. C:\Documents and Settings\Administrateur\JavaApplication1\src\javaapplication1\Fenetre.java:84: non-static variable this cannot be referenced from a static context
  3.             Rectangle r2 = new Rectangle(20,10);
  4. C:\Documents and Settings\Administrateur\JavaApplication1\src\javaapplication1\Fenetre.java:85: cannot find symbol
  5. symbol  : variable d1
  6. location: class javaapplication1.Fenetre
  7.             d1.addelement(r2);
  8. Note: C:\Documents and Settings\Administrateur\JavaApplication1\src\javaapplication1\Fenetre.java uses unchecked or unsafe operations.
  9. Note: Recompile with -Xlint:unchecked for details.
  10. 2 errors
  11. BUILD FAILED (total time: 0 seconds)


Alors je ne peux pas compiler ..
 
C'est normal ca ?


Message édité par myeve le 12-12-2004 à 15:57:02
n°921036
the real m​oins moins
Posté le 12-12-2004 à 15:56:21  profilanswer
 

ben oui; lis les messages d'erreurs.
 
 
au fait t'as essayé le (re)validate() à la place de repaint() ?
(comme suggeré par patachou)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°921043
myeve
Posté le 12-12-2004 à 16:04:52  profilanswer
 

Alors j'ai modifié mon bouton Ecouteur3:
 

Code :
  1. class Ecouteur3 implements ActionListener {
  2.     public void actionPerformed(ActionEvent e){
  3.         MonCanvas d2 = new MonCanvas();
  4.         add("Center",d2);
  5.         Rectangle r3 = new Rectangle(30,30);
  6.         d2.addelement(r3);
  7.         //d2.paint();
  8.         validate();
  9.        
  10.     }
  11. }


 
Alors si j'utilise 'validate()', ca ne change rien par rapport à 'd2.paint()'
 
C'est le fait de mettre 'd2.addelement(r3)' qui permet d'aller lancer le paint, car il rentre dans la boucle de ma methode 'paint' avec 'd2.addelement(r3);'


Message édité par myeve le 12-12-2004 à 16:05:33
n°921050
myeve
Posté le 12-12-2004 à 16:28:30  profilanswer
 

Bon j'ai avancé:
 
j'ai mis mes Ecouteurs dans ma classe Fenetre principale:
 

Code :
  1. class Fenetre extends Frame { 
  2.    
  3.     Fenetre(){ 
  4.         super ("Fenetre" ); 
  5.         setSize(800, 600); 
  6.        
  7.         //Traitement de la fermeture de la fenetre   
  8.         addWindowListener( new WindowAdapter(){ 
  9.             public void windowClosing(WindowEvent e){ 
  10.                 System.exit(0); 
  11.             } 
  12.         }); 
  13.        
  14.         /* Bordure de la fenetre */ 
  15.         setLayout(new BorderLayout()); 
  16.        
  17.         /* Partie centrale, Canvas */ 
  18.         //MonCanvas d1 = new MonCanvas();   
  19.         //add("Center",d1);   
  20.        
  21.         /* Panel du bas de la fenetre */ 
  22.         Panel p = new Panel(); 
  23.         add("South",p); 
  24.         //Bouton quit   
  25.         Button quit = new Button("Quitter" ); 
  26.         p.add(quit); 
  27.         quit.addActionListener(new Ecouteur2()); 
  28.         //Bouton rectangle   
  29.         Button rectangle = new Button("Rectangle" ); 
  30.         p.add(rectangle); 
  31.         rectangle.addActionListener(new Ecouteur3()); 
  32.         //Fenetre visible   
  33.         setVisible(true); 
  34.     } 
  35.    
  36.     public static void main( String args[] ) { 
  37.             Fenetre f = new Fenetre(); 
  38.      } 
  39. class Ecouteur2 implements ActionListener { 
  40.     public void actionPerformed(ActionEvent e){ 
  41.         System.exit(0); 
  42.     } 
  43. }
  44. class Ecouteur3 implements ActionListener { 
  45.     public void actionPerformed(ActionEvent e){ 
  46.         MonCanvas d2 = new MonCanvas();
  47.         d2.setBackground(Color.white);
  48.         add("Center",d2);
  49.         Rectangle r3 = new Rectangle(20,30);
  50.         d2.addelement(r3);
  51.         validate();   
  52.      } 
  53. }
  54. }


 
Or dans ce cas, lorsque je clique sur mon bouton 'Rectangle', il m'affiche bien le rectangle comme demandé.
 
Mais j'ai commenté la partie dans ma classe 'Fenetre':
//MonCanvas d1 = new MonCanvas();  
//add("Center",d1);  
 
Car sinon le rectangle ne s'affiche pas, et ca c'est embetant.  
 
Or si je clique plusieurs fois sur le bouton, il devrait stocker ca dans le vecteur nan ?
Alors que la il ne garde toujours que le dernier...


Message édité par myeve le 12-12-2004 à 16:29:14
n°921051
R3g
fonctionnaire certifié ITIL
Posté le 12-12-2004 à 16:30:02  profilanswer
 

J'aime deja beaucoup plus. Une petite question : tu penses appeler la methode validate() de quel objet au juste ?


---------------
Au royaume des sourds, les borgnes sont sourds.
n°921052
myeve
Posté le 12-12-2004 à 16:31:50  profilanswer
 

ba en fait je vois pas a quoi ca correspond validate ?

n°921053
myeve
Posté le 12-12-2004 à 16:35:08  profilanswer
 

Ah si ok, si je le mets pas ya rien qui s'affiche ;)
 
Mais le probleme, si je clique deux fois dessus, le vector n'a pas gardé l'ancien ..

n°921055
the real m​oins moins
Posté le 12-12-2004 à 16:44:51  profilanswer
 

myeve a écrit :

ba en fait je vois pas a quoi ca correspond validate ?

-> tuto + javadoc [:itm]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°921282
myeve
Posté le 12-12-2004 à 21:20:27  profilanswer
 

Bon en tout cas merci a tout le monde, j'ai enfin resussi et fini ce que je voulais faire, je le mets pour ceux que ca interesse de savoir ce que je voulais vraiment ;)
 
Ce programme marche!  
 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import com.sun.java.swing.*;
  4. import java.util.*;
  5. /* -----------------------------------------------------------------------*
  6. Classe principale qui dérive de 'Frame'
  7. --------------------------------------------------------------------------*/
  8. class JavaTD3 extends Frame {
  9.     MonCanvas d1;
  10.    
  11.     public Fen(){
  12.         super ("Java: Fenetre" );
  13.         setSize(800, 600);
  14.         setBackground(Color.lightGray);
  15.        
  16.         /* Bordure de la fenetre */
  17.         setLayout(new BorderLayout());
  18.        
  19.         /* Partie centrale, Canvas */
  20.         d1 = new MonCanvas();
  21.         add("Center",d1);
  22.        
  23.         /* Panel du bas de la fenetre */
  24.         Panel p = new Panel();
  25.         add("South",p);
  26.        
  27.         //Bouton Redessiner
  28.         Button repaint = new Button("Redessine" );
  29.         p.add(repaint);
  30.         repaint.addActionListener(new ActionListener() {
  31.  public void actionPerformed(ActionEvent e) {
  32.   d1.clearScreen();
  33.   repaint();
  34.  }
  35. });
  36.        
  37.         //Bouton quit
  38.         Button quit = new Button("Quitter" );
  39.         p.add(quit);
  40.         quit.addActionListener(new ActionListener() {
  41.  public void actionPerformed(ActionEvent e) {
  42.   System.exit(0);
  43.  }
  44. });
  45.        
  46.         //Bouton rectangle
  47.         Button rectangle = new Button("Rectangle" );
  48.         p.add(rectangle);
  49.         rectangle.addActionListener(new ActionListener() {
  50.  public void actionPerformed(ActionEvent e) {
  51.   ajouteRectangle();
  52.   repaint();
  53.  }
  54. });
  55.        
  56.         //Bouton ellipse
  57.         Button ellipse = new Button("Ellipse" );
  58.         p.add(ellipse);
  59.         ellipse.addActionListener(new ActionListener() {
  60.  public void actionPerformed(ActionEvent e) {
  61.   ajouteEllipse();
  62.   repaint();
  63.  }
  64. });
  65.         //Bouton cercle
  66.         Button cercle = new Button("Cercle" );
  67.         p.add(cercle);
  68.         cercle.addActionListener(new ActionListener() {
  69.  public void actionPerformed(ActionEvent e) {
  70.   ajouteCercle();
  71.   repaint();
  72.  }
  73. });
  74.        
  75.         //Bouton carré
  76.         Button carre = new Button("Carré" );
  77.         p.add(carre);
  78.         carre.addActionListener(new ActionListener() {
  79.  public void actionPerformed(ActionEvent e) {
  80.   ajouteCarre();
  81.   repaint();
  82.  }
  83. });
  84.        
  85.         //Fenetre visible
  86.         setVisible(true);
  87.     }
  88.     //fonction qui renvoir un nb aleatoire et prend en parametre la valeur maximum du nombre aleatoire
  89.     int getRandom(int max){
  90.         int x;
  91.         x = (int)Math.floor(Math.random()*max);
  92.         return x;
  93.     }
  94.     /* Actions sur les boutons */
  95.     void ajouteRectangle() {
  96.  Rectangle rect = new Rectangle(getRandom(800),getRandom(600));
  97.                 rect.setColor("black" );
  98.                 rect.setOrigine(getRandom(700),getRandom(500));
  99.                 d1.addelement(rect);
  100.     }
  101.    
  102.     void ajouteEllipse() {
  103.  Ellipse el = new Ellipse(getRandom(800),getRandom(600));
  104.                 el.setColor("red" );
  105.                 el.setOrigine(getRandom(700),getRandom(500));
  106.                 d1.addelement(el);
  107.     }
  108.    
  109.     void ajouteCercle() {
  110.  Cercle ce = new Cercle(getRandom(800));
  111.                 ce.setColor("green" );
  112.                 ce.setOrigine(getRandom(700),getRandom(500));
  113.                 d1.addelement(ce);
  114.     }
  115.    
  116.     void ajouteCarre() {
  117.  Carre ca = new Carre(getRandom(800));
  118.                 ca.setColor("blue" );
  119.                 ca.setOrigine(getRandom(700),getRandom(500));
  120.                 d1.addelement(ca);
  121.     }
  122.    
  123.     /* fonction main */
  124.     public static void main( String args[] ) {
  125.             Fen f = new Fen();
  126.     }
  127.    
  128.     public void paint(Graphics g) {
  129.  d1.repaint();
  130. }
  131. }
  132. /* -----------------------------------------------------------------------*
  133. Liste des autres classes
  134. --------------------------------------------------------------------------*/
  135. abstract class FigureGeometrique implements Coloriable, Dessinable {
  136.    
  137.     int originx = 0;
  138.     int originy = 0;
  139.    
  140.     private String Couleur;
  141.     public void setColor(String c){
  142.         Couleur = c;
  143.     }
  144.     public Color getColor(){
  145.         if (Couleur.equals("red" )) return Color.red;
  146.         else if (Couleur.equals("blue" )) return Color.blue;
  147.         else if (Couleur.equals("green" )) return Color.green;
  148.         else return Color.black;
  149.     }
  150.    
  151.     abstract void affiche();
  152.    
  153.     void setOrigine(int x, int y){
  154.         originx = x;
  155.         originy = y;
  156.     }
  157.    
  158.     FigureGeometrique(){
  159.         //String nom;
  160.         //int largeur,longueur;
  161.     }
  162.    
  163. } //Fin classe FigureGeometrique
  164. class Rectangle extends FigureGeometrique implements Mesurable, Dessinable {
  165.    
  166.     int longueur,largeur;
  167.    
  168.     //interface Mesurable
  169.     public double aire(){
  170.         return (largeur*longueur);
  171.     }
  172.     public int largeur(){
  173.         //if (l.largeur > largeur) return l; else return this;
  174.         return largeur;
  175.     }
  176.     public int hauteur(){
  177.         return longueur;
  178.     }
  179.    
  180.     //interface Dessinable
  181.     public void dessine(Graphics g){
  182.         g.setColor(this.getColor());
  183.         g.drawRect(originx, originy , largeur , longueur);
  184.    }
  185.    
  186.     Rectangle(int x, int y){
  187.         largeur = x;
  188.         longueur = y;
  189.     }
  190.    
  191.     Rectangle(){
  192.         largeur=10;
  193.         longueur=10;
  194.     }
  195.    
  196.     void agrandir(int z){
  197.         largeur *= z;
  198.         longueur *= z;
  199.     }
  200.    
  201.     void affiche(){
  202.         System.out.println("Rectangle de dimensions "+largeur+", "+longueur+" centre en "+originx+","+originy);
  203.     }
  204. }
  205. class Carre extends Rectangle {
  206.    
  207.     Carre(int c){
  208.         super(c,c);
  209.     }
  210.    
  211.     Carre(){
  212.         longueur = largeur = 100;
  213.     }
  214.    
  215.     void affiche(){
  216.         System.out.println("Carre de cote "+largeur+" centre en "+originx+","+originy);
  217.     }
  218. }
  219. class Ellipse extends FigureGeometrique implements Mesurable, Dessinable {
  220.    
  221.     int longueur, largeur;
  222.    
  223.     //interface Mesurable
  224.     public double aire(){
  225.         double PI = 3.14;
  226.         return (PI * largeur * longueur);
  227.     }
  228.     public int largeur(){
  229.         return largeur;
  230.     }
  231.     public int hauteur(){
  232.         return longueur;
  233.     }
  234.    
  235.     //interface Dessinable
  236.     public void dessine(Graphics g){
  237.         g.setColor(this.getColor());
  238.         g.drawOval(originx, originy, largeur, longueur); 
  239.     }
  240.    
  241.     Ellipse(int x, int y){
  242.         largeur = x;
  243.         longueur = y;
  244.     }
  245.    
  246.     Ellipse(){
  247.         largeur = 10;
  248.         longueur = 10;
  249.     }
  250.    
  251.     void agrandir(double z){
  252.         largeur *= z;
  253.         longueur *= z;
  254.     }
  255.    
  256.     void affiche(){
  257.         System.out.println("Ellipse de rayons "+largeur+", "+longueur+" centree en "+originx+","+originy);
  258.     }
  259. }
  260. class Cercle extends Ellipse {
  261.    
  262.     Cercle(int r){
  263.         super(r,r);
  264.     }
  265.    
  266.     Cercle(){
  267.         largeur = longueur = 50;
  268.     }
  269.    
  270.     void affiche(){
  271.         System.out.println("Cercle de rayon "+largeur+" centre en "+originx+","+originy);
  272.     }
  273. }
  274. /* -----------------------------------------------------------------------*
  275. Liste des interfaces
  276. --------------------------------------------------------------------------*/
  277. interface Mesurable{
  278. double aire();
  279. int largeur();
  280. int hauteur();
  281. }
  282. interface Coloriable{
  283. void setColor(String Couleur);
  284. Color getColor();
  285. }
  286. interface Dessinable {
  287.     public void dessine(Graphics g);
  288. }
  289. /* -----------------------------------------------------------------------*
  290. Classe Canvas, 'MonCanvas', partie centrale
  291. --------------------------------------------------------------------------*/
  292. class MonCanvas extends Canvas{
  293.    
  294.     Vector memoire = new Vector(); // Creation vecteur
  295.    
  296.     MonCanvas(){
  297.         super();
  298.         setBackground(Color.white);
  299.     }
  300.    
  301.     //Ajout d'element dans le vecteur memoire
  302.     public void addelement(Dessinable d) {
  303.         memoire.add(d);
  304.     }
  305.     //Efface l'ecran pour redessiner
  306.     public void clearScreen() {
  307.  memoire = new Vector();
  308. }
  309.    
  310.     //on dessine les objets
  311.     public void paint(Graphics g){
  312.        int index = 0;
  313.         while(index < memoire.size()) {
  314.             ((Dessinable)memoire.elementAt(index)).dessine(g);
  315.             index++;
  316.         }
  317.     }
  318. }

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Probleme de addActionListener [résolu]

 

Sujets relatifs
toujours ptit probleme de scriptProblème Javascript, ouverture dans la même fenêtre !
Probleme menu déroulant[RESOLU] Apache - PHP5
probleme de script[RESOLU]encore un probleme de script!
requette sql (mysql) [RESOLU]Probleme fgets
[RESOLU] probleme de script d'upload. 
Plus de sujets relatifs à : Probleme de addActionListener [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR