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

Agents de placement/Fenêtres Java Discussion :

[JFrame] Explication sur une différence de comportement


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 25
    Points : 12
    Points
    12
    Par défaut [JFrame] Explication sur une différence de comportement
    Bonjour,

    Alors voila, j'ai fait un petit (tout petit) programme pour une amie pour faire un traitement sur du texte. Pour faire plus joli, je lui ai dessiné une fenêtre, avec des boutons "parcourir", etc jusque la tout va bien.

    Et je me suis apercu (parce que j'ai fait une erreur, ca va de soi ;-) ) que le comportement varier d'une jvm à l'autre (même version, ou presque), et je vous demande si c'est normal ou pas (si la question a déjà été posée, merci de me renvoyer vers le thread en question) :

    Donc mon erreur a été de faire un JFrame.add(JPanel) au lieu d'un JFrame.getContentPane().add(JPanel) dans mon code. Ce qui a très bien fonctionner sur mon laptop (jvm 1.5 sous Linux, et jvm 1.4.2 téléchargée cette semaine (update 8 je crois ?) sous windows) mais a provoqué des erreurs chez l'amie en question. J'ai donc essayé sur l'ordi de ma copine (jvm 1.4.2 "ancienne de quelques mois" sous linux) chez qui ca a provoquée une erreur (me disant d'ailleurs d'utiliser getContentPane() ).

    Donc ma question est : est-ce du à la version ? Est-ce normal qu'entre 2 version 1.4.2 le comportement différe ? Et aussi j'ai utilisé eclipse pour écrire ce petit programme, et il ne m'a pas signalé d'erreurs (ni avec l'un (.add) ni avec l'autre d'ailleurs (.getContentPane().add) ?

    Merci pour vos éclaircissement !

    Jeremy

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est normal que tu n'obtiennes pas d'erreur à la compilation.
    La méthode add() de JFrame est héritée de Container.

    Par contre il ne faut pas l'utiliser car une JFrame est composé d'un RootPane qui comporte lui même le ContentPane (déstiné à recevoir le contenu de la fenêtre) et le MenuPane (destiné à recevoir le menu).
    Pour ajouter un composant dans la JFrame, il faut donc l'ajouter dans le ContentPane avec getContentPane().add(). C'est d'ailleurs indiqué dans la documenation de JFrame :

    http://javasearch.developpez.com/j2s...ng/JFrame.html
    For example, to add a child to an AWT frame you'd write:

    frame.add(child);


    However using JFrame you need to add the child to the JFrame's content pane instead:

    frame.getContentPane().add(child);
    Il y a le même problème pour les méthode remove() et setLayout()

    Si une de ces méthodes est utilisée, une Exception est renvoyé...


    Par contre, dans Java 5.0, la classe JFrame a été modifié afin que les méthodes add(), remove() et setLaout() de JFrame renvoyent vers les méthodes du même nom du ContentPane...

    Donc c'est normal que chez toi cela marche avec une JVM 5.0, mais pas sur des JVM 1.4.2 et inférieur (pour l'update 8 c'est bizarre... soit tu as un conflit de version avec la 5.0, soit cela a été intégré aussi dans l'update 8...)


    a++

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 25
    Points : 12
    Points
    12
    Par défaut
    Merci pour la réponse ! Je viens d'apprendre le pourquoi du getContentPane (la présence du MenuPane ...) :-)

    Je pense effectivement que le mapping (je pense que c'est ce qui a été fait ?) des fonctions dans la 5.0 a été reporté dans les dernieres 1.4. Il n'y a pas de conflit de versions, enfin je veux dire que je n'ai qu'une seule jvm par système, et j'ai utilisé le même jar sur les 3 systèmes ...

    Merci encore pour la réponse !

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

Discussions similaires

  1. [Requête] Explication sur une condition dans une Requête
    Par jimmymatrix dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/05/2007, 14h34
  2. Réponses: 4
    Dernier message: 07/04/2007, 11h23
  3. Réponses: 1
    Dernier message: 22/11/2006, 16h33
  4. explication sur une ligne
    Par Pitou5464 dans le forum C
    Réponses: 12
    Dernier message: 31/10/2006, 17h12
  5. Explication sur une instruction...
    Par snoop dans le forum C++
    Réponses: 5
    Dernier message: 03/05/2006, 22h56

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