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 :

Utilisation de "final" dans un composant swing : est-ce restrictif ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Par défaut Utilisation de "final" dans un composant swing : est-ce restrictif ?
    bonjour

    j'utilise swingX dans un projet(swingx ajoute des composants à swing).

    j'ai ce 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
                JXDatePicker dtPicker_oracle_debut = new JXDatePicker();
    		dtPicker_oracle_debut.setName("dtp_oracle_debut");
    		dtPicker_oracle_debut.setBounds(76, 99, 152, 23);
    		panel.add(dtPicker_oracle_debut);
     
    		JXDatePicker dtPicker_oracle_fin = new JXDatePicker();
    		dtPicker_oracle_fin.setName("dtp_oracle_fin");
    		dtPicker_oracle_fin.setBounds(76, 130, 152, 23);
    		panel.add(dtPicker_oracle_fin);
     
    		JButton btnNewButton = new JButton("GO");
    		btnNewButton.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
     
    				Calendar c_debut = Calendar.getInstance();
    				c_debut.setTime(dtPicker_oracle_debut.getDate());
     
    			}
    		});
    		btnNewButton.setBounds(12, 165, 216, 25);
    		panel.add(btnNewButton);
    et cette erreur:

    Cannot refer to a non-final variable dtPicker_oracle_debut inside an inner class defined in a different method
    , à la ligne "c_debut.setTime (...)"


    j'ai trouvé que final sert lorsqu'on veux définir une fois pour toutes la valeur d'une variable.
    donc elle n'est qu' initialisable, après on ne peut plus la modifier.

    eclipse me propose d' ajouter "final" à la déclaration du JXDatePicker, mais alors pourrai-je encore modifier plusieurs fois cette valeur (le composant JXDatePicker, affiché à l'écran, est susceptible d'avoir plusieurs valeurs différentes, ne serait-ce que si l'on se trompe de date et qu'on en entre 2 différentes à la suite)?

    merci

  2. #2
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    Tu pourras modifier la valeur.
    Il me semble que c'est la référence de l'objet qui est "bloquée"!

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Il faut effectivement ajouter "final" car c'est ton objet graphique qui sera final et non sa valeur.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    t'es obligé de le mettre en final. Sinon le compilateur n'a pas la moindre idée de la référence qu'il devra passer à la inner classe.

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il est surtout préférable de déclarer tes composants graphiques en tant que membre de ta classe, et non pas seulement dans ton constructeur.

    Cela règlera ton problème de final et d'inner class, et secondement, cela te permettra de régler un second problème, celui de pouvoir accéder à ces composants depuis d'autres méthodes...

    Puis de toute façon c'est bien plus propre

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Par défaut
    merci, je l'ai fait et ça marche

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

Discussions similaires

  1. Rajout d'élément dans un composant swing
    Par Stefounette dans le forum JavaFX
    Réponses: 3
    Dernier message: 10/05/2010, 10h20
  2. Intégration de fichiers pdf dans un composant Swing
    Par m_piou dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 15/10/2007, 17h12

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