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

NetBeans Java Discussion :

Questions sur l'héritage dans Matisse


Sujet :

NetBeans Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 55
    Points : 47
    Points
    47
    Par défaut Questions sur l'héritage dans Matisse
    Bonjour à tous.
    Dans un projet java, j'ai créé une fenêtre interne Java (FenModel) avec des comportements bien précis (event resize, moved and co). Toutes les fenêtres internes de mon projet MDI devront avoir les mêmes comportements avec les mêmes évents donc j'aimerais faire hériter mes nouvelles fenêtres internes de FenModel.

    Je précise que FenModel est une fenêtre vide qui a juste des comportements précis quand on redimensionne ou déplace. Les fenêtres qui en hériteront seront celles qui auront les boutons, tables, etc.....

    Cela fonctionne correctement sauf que je perds l'aspect graphique. Mes nouvelles fenêtres qui héritent de celle-ci m'offrent juste le code et pas l'interface de création graphique Matisse.

    Y a t-il une solution pour que j'ai quand même la création graphique pour mes fenêtres filles héritées de FenModel??

  2. #2
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Quand tu crées une nouvelle fenetre dérivée, il te faut créer un Bean Form et donner ta classe mère.

    Néanmoins, il y eu qqs problème pour arriver a faire de l'héritage avec matisse, notamment pour récupérer le layout de la classe mère. Il faut une méthode containerDelegate() et fournir un BeanInfo qui va bien. A l'époque il n'y avait pas eu grand succes
    Enfin c'est peut être toi qui va dévoiler la clé du mystère

    Discussion ici
    http://www.developpez.net/forums/sho...hlight=matisse
    Netbeans account : nico@share.java.net
    Merci de ne pas poser de questions techniques par MP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 55
    Points : 47
    Points
    47
    Par défaut
    J'ai trouvé une solution annexe.
    Le but de base est pour moi qu'une fenêtre interne ne puisse se mettre par dessus une autre fenêtre qui doit toujours être visible.
    J'ai contourné le problème et je dois juste rajouter le lancement d'une fonction quand on déplace ou on redimensionne une fenêtre.
    Il est vrai que c'est moins bien que l'héritage mais je n'ai pas le niveau pour trouver comment faire dans Matisse...
    Peut être dans Netbeans 6.0 ??
    Mais si qqun a une idée pour cette histoire d'héritage, je suis preneur et je tenterais de trouver un peu :-)

  4. #4
    Membre averti

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Points : 371
    Points
    371
    Par défaut
    Je n’ai peut être pas bien compris ce que tu cherche à faire.

    J’imagine que tu as créé une classe MaJFrame sur un modèle du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class MaJFrame extends javax.swing.JFrame {
        /** Creates a new instance of MaJFrame */
        public MaJFrame() {
        }
    }
    Avec en plus, tout ce que tu souhaite de spécifique pour cette classe.

    Tu ajoute cette classe (après un build) dans la palette.

    Toutes les fenêtres que tu créeras via Matisse (DnD de la à partir de la palette) seront bien du type MaJFrame.
    Là où ils se sont cassé les dents dans cette discussion (http://www.developpez.net/forums/sho...hlight=matisse), c’est pour ajouter des propriétés dans l’éditeur de propriétés.

    Chris.

  5. #5
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Citation Envoyé par jproto
    Là où ils se sont cassé les dents dans cette discussion (http://www.developpez.net/forums/sho...hlight=matisse), c’est pour ajouter des propriétés dans l’éditeur de propriétés.
    Non c'est une histoire de container. J'explique :

    Tu crées une JFrame et par exemple tu rajoutes une barre de menu en haut, une barre d'état en bas et un menu vertical a gauche (une jframe ou autre biensur, et n'importe quel composant à l'intérieur c'est pareil)
    Maintenant, tu voudrais ajouter cette classe à la palette et pouvoir l'utiliser comme base de tes futures classes.
    Tu fais ton DnD et tu as effectivement une nouvelle classe héritant de MaJFrame.
    Par contre matisse va créer sa fonction initComponent() et appliquer un layout à la classe, donc à MaJFrame, donc à JFrame. => tu as perdu tous tes composants et ta mise en page !!

    Le remède, créer un fonction getContainerDelegate() qui renvoi le container valide de la frame, celui ou tu vas pouvoir rajouter des composants (la partie du milieu dans mon exemple)
    En plus, il faut associer un BeanInfo a ta frame et expliquer que matisse doit récupérer le container fourni par la méthode getContainerDélégate() et non celui de la JFrame !
    Expliquer ici http://wiki.netbeans.org/wiki/view/F...ExtendingForms

    C'est la que ca bloque, Matisse génère des erreurs internes quand tu DND la classe et on ne peut aller plus loin (erreur de nous ou de matisse, je ne peux pas l'assurer)

    Donc ca va dependre de ce que tu veux faire, si t'as besoin de rajouter des composants a ta JFrame mère tu va tomber sur ce problème.

    n!co
    Netbeans account : nico@share.java.net
    Merci de ne pas poser de questions techniques par MP

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 55
    Points : 47
    Points
    47
    Par défaut
    Oui, nico a bien compris ce que je voulais faire.
    Créer une classe héritée de JInternalFrame qui servira de base à d'autres fenêtres internes et embarquera certains comportements génériques.
    Ensuite pouvoir générer des fenêtres héritées de cette classe générique et que Matisse me la montre visuellement que je puisse ajouter mes boutons, traitements et compagnie.

    Dans la pratique, je veux créer une classe JInternalFrame générique qui prendrait en compte le fait que j'ai une barre de travail sur la coté droit et que les autres fenêtres ne doivent pas pouvoir se mettre par dessus sauf quand elle est cachée.

    Ci joint une copie écran pour comprendre le concept.
    Images attachées Images attachées  

  7. #7
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Regardes le dernier lien que j'ai donné, c'est la procédure officielle pour étendre un form.
    Dans les révisons, j'ai vu qu'il avait été mise a jour récemment depuis qu'on avait essayer de faire la manip, peut être que maintenant çà fonctionne mieux !
    Netbeans account : nico@share.java.net
    Merci de ne pas poser de questions techniques par MP

  8. #8
    Membre averti

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Points : 371
    Points
    371
    Par défaut
    OK, il va manifestement falloir que je creuse un peu plus la question.

    Chris.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 55
    Points : 47
    Points
    47
    Par défaut
    Pareil, je vais creuser.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/01/2008, 05h56
  2. Questions sur la navigation dans les répertoires
    Par belle5656 dans le forum Langage
    Réponses: 86
    Dernier message: 03/11/2007, 20h44
  3. Réponses: 2
    Dernier message: 31/08/2007, 11h33
  4. Question sur l'héritage
    Par the big ben 5 dans le forum Delphi
    Réponses: 28
    Dernier message: 06/06/2006, 17h27
  5. Questions sur le son dans un site web
    Par crash override dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 29/11/2005, 20h25

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