IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[Debutant(e)]creation de JavaBeans


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut [Debutant(e)]creation de JavaBeans
    Bonjour j'ai ecris un composant qui représente un interrupteur. Le graphisme est simple, le composant est rouge si l'interrupteur est fermer et vert si ouvert. Pour cela j'utilise un booleen qui represente l'etat de l'interrupteur et a chaque changement d'etat, un evenement PropertyChangedEvent est lancé.

    Le problee survient quand je veux mettre le JavaBean dans la BeanBox.
    Voici ce qu'on me dis:



    et voila le code :

    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
     
    package exam;
     
    import java.awt.*;
    import java.awt.event.*;
    import java.beans.* ;	// pour PropertyChangeSupport
    import java.util.*;
     
    public class Interrupteur extends Button {		
     
    	private boolean estOuvert;
     
    	private PropertyChangeSupport pcs;
     
    	public Interrupteur() {
    		estOuvert = false;
    		pcs = new PropertyChangeSupport(this) ;
     
     
    	// L'erreur est du a ceci je pense.
    	/*ActionListener obv = new ActionListener() {
    		public void actionPerformed(ActionEvent e) {
    			setInterrupteur(!estOuvert);
    		}
    	};*/ 
    	//	this.addActionListener(obv);
      		repaint();
     
     
    	}
     
    	void setInterrupteur(boolean newEtat) {
    		boolean old = estOuvert;
    		estOuvert = newEtat;
    	 	pcs.firePropertyChange("Etat", old, newEtat) ;
    		repaint();
    	}
     
    	boolean isInterrupteur() {
    		return estOuvert;
    	}
     
    	public void paint(Graphics g) {
    		Dimension d = new Dimension(this.getSize()) ;
     
    		if(estOuvert == true)
    			g.setColor(Color.GREEN);
    		else
    			g.setColor(Color.RED);
     
    		g.fillOval(0,0,50,50);
    	}
     
    	public Dimension getPreferredSize(){
    		return new Dimension(50, 50) ;
    	}
     
     
    	// ajouter un observateur de changement de propriété
    	public void addPropertyChangeListener(PropertyChangeListener l){
    		pcs.addPropertyChangeListener(l) ;
    	}
     
    	// supprimer un observateur de changement de propriété
    	public void removePropertyChangeListener(PropertyChangeListener l){
    		pcs.removePropertyChangeListener(l) ;
    	}
     
    }
    J'ai mis une balise au niveau du probleme dans le code. Si quelqu'un sait me dire pourquoi cela fonctionne pas, ca m'aiderai. Merci beaucoup.




    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    duj
    duj est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2003
    Messages : 141
    Points : 474
    Points
    474
    Par défaut
    Salut,

    tu as mis une inner classe dans ton code.
    quand tu compile, le compilateur génère un petit fichier, justement nommé

    NomdelaClasse$i
    où i represente la ième inner classe de ta classe.

    Bref, vérifie bien que le fichier exam.interrupteur$1 se trouve bien dans ton classapth

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    j'ai l'impression que mon classpath est correcte!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set classpath=c:\Documents and Settings\Utilisateur\Bureau\revJava;c:\java\jre\lib
    de le repertoire revJava se trouve le repertoire exam.

    le manifeste pour mon composant est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Name: exam/Interrupteur.class
    Java-Bean: true
    et j'appel le programme jar de cette facon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jar cmf maniInterrupteur.txt Interrupteur.jar exam\Interrupteur.class

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Salut Ju, c'est Ju!

    Dis, déjà, le prof va po être content car tu as oublié un getInterrupteur... Mais dis moi, tu es obligé de faire des classes héritée pour du bean car chez moi (pour un autre truc), ça marche sans heritage...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Pour un boolean c'est isInterrupteur! c'est la norme.
    cf: Guide du developpeur JavaBean page 2.
    Pour l'heritage c pas ce qui cause le prob.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Tu a le même problème que j'ai eu à l'examen... écoute, je vais le faire chez moi et je te dis quoi

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Tiens, là ça marche... maintenant, vois pour la couleur, je fais ici avec Label et ce n'est pas un booléen... De toute façon, à l'exam c t pas un booléen que j'ai utilisé lol

    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
     
    package td8AB;
     
    import java.awt.* ;
    import java.awt.event.* ;
    import java.beans.* ;
    import java.util.* ;
     
    public class Interrupteur extends Button{
     
    	public int on;
    	public int oldOn;
    	private PropertyChangeSupport pcs = new PropertyChangeSupport(this) ;
     
    	public Interrupteur(){
    		this.setLabel("1");
    		on=1;
            this.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e){
    				if(on==0){
    					setOn(1);
    				}
    				else{
    					setOn(0);
    				}
    			}
    		}) ;
    	/*	text.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e){
    				setTexte(text.getText());
    			}
    		}) ;*/
     
    	}
    	public int getOn(){
    		return on;
    	}
    	public void setOn(int t){
    		if(t==1) this.setLabel("1");
    		else this.setLabel("0");
    		oldOn=on;
    		on=t;
    		pcs.firePropertyChange("on",oldOn,on) ;
    	}
     
    	public void addPropertyChangeListener(PropertyChangeListener l){
    		pcs.addPropertyChangeListener(l) ;
    	}
     
    	public void removePropertyChangeListener(PropertyChangeListener l){
    		pcs.removePropertyChangeListener(l) ;
    	}
    }

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Et avec couleur !

    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
     
    package td8AB;
     
    import java.awt.* ;
    import java.awt.event.* ;
    import java.beans.* ;
    import java.util.* ;
     
    public class Interrupteur extends Button{
     
    	public int on;
    	public int oldOn;
    	private PropertyChangeSupport pcs = new PropertyChangeSupport(this) ;
     
    	public Interrupteur(){
    		on=1;
    		this.repaint();
            this.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e){
    				if(on==0){
    					setOn(1);
    				}
    				else{
    					setOn(0);
    				}
    			}
    		}) ;
    	/*	text.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e){
    				setTexte(text.getText());
    			}
    		}) ;*/
     
    	}
    	public int getOn(){
    		return on;
    	}
    	public void setOn(int t){
    		oldOn=on;
    		on=t;
    		this.repaint();
    		pcs.firePropertyChange("on",oldOn,on) ;
    	}
     
    	public void paint(Graphics g){
    		if(on==1)
    		     g.setColor(Color.GREEN);
    		else
    		     g.setColor(Color.RED);
    	 	g.fillRect(0,0,20,20);
    	}
    	public void addPropertyChangeListener(PropertyChangeListener l){
    		pcs.addPropertyChangeListener(l) ;
    	}
     
    	public void removePropertyChangeListener(PropertyChangeListener l){
    		pcs.removePropertyChangeListener(l) ;
    	}
    }

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    PROBLEME RESOLU!

    Pour ceux qui bloqueraient comme moi, essaye ca:

    il faut changer la fonction setOuvert() en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void setInterrupteur(boolean newEtat) { 
          boolean old = estOuvert; 
          estOuvert = newEtat; 
           pcs.firePropertyChange("estOuvert", old, estOuvert) ; 
          repaint(); 
    }
    Pour ce qui est du manifeste, ajouter au repertoire un petit .bat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @ECHO OFF
    REM
    REM Usage: mb exam Interrupteur
    REM
     
    ECHO -- Creation du jar pour la Bean "%2" du package "%1"
    set Path=C:\java\bin;%Path%
    echo Name: exam/Interrupteur.class >maniInterrupteur.txt
    echo Java-Bean: true >>maniInterrupteur.txt
    jar cfm Interrupteur.jar maniInterrupteur.txt exam\*.class
    copy Interrupteur.jar C:\java\beans\jars
    votre .jar sera parfait!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment debuter la creation d'un site web?
    Par SENJULIS dans le forum Débuter
    Réponses: 3
    Dernier message: 25/03/2010, 06h54
  2. debutant (problème creation de module)
    Par krikridamour dans le forum Général Python
    Réponses: 11
    Dernier message: 19/11/2009, 07h59
  3. Réponses: 9
    Dernier message: 14/08/2009, 13h27
  4. [DEBUTANT] [STRUTS]Creation d'un bean init
    Par grizzz dans le forum Struts 1
    Réponses: 3
    Dernier message: 25/02/2005, 10h54
  5. [Debutant][Conception] Création dynamique d'instance
    Par SirDarken dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 17/11/2004, 23h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo