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

avec Java Discussion :

question sur l'héritage


Sujet :

avec Java

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut question sur l'héritage
    Bonsoir,

    Je débute en Java, et quelque concept reste flou.
    J'ai crée une interface graphique avec swing, dans laquelle il y a une classe (appelons la A) qui défini une fiche de contact, avec mes JTextField, mes JLabel etc..., elle permet de remplir la fiche d'un contact (nom,prénom ...), j'ai besoin de créer une autre classe (appelons la B) pour la modification d'un contact et en fait graphiquement ce sera les même jTextField, JLabel etc..., donc j'aimerais faire appel à la classe A plutôt que de refaire l'interface graphique de la fiche d'un contact.
    Dois je passer par l'héritage? , si oui est ce que si je modifie une zone de texte par exemple le nom, dans la classe B, est ce que ça va changer dans la classe A?
    Je sais pas trop comment faire, voilà j'espère avoir été clair merci d'avance.

  2. #2
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    ça ne tiendrais qu'à moi je ferais un bête copier coller de ma classe xD.
    Bref, mais pour faire ça avec une seule classe, je ferais une classe "Contact" qui contiendra toute mon interface (JTextField, JLabel,...) et après je ferais 2 instances de contact au choix.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Contact nouveau = new Contact("Nouveau");
    Contact modifier = new Contact("Modifier","Mr dupont")
    Et ensuite dans la classe contact l'action effectuée se fait en fonction... nouveau ou modifier.

    C'est comme ça que je ferais personnellement, pas besoin d'héritage je pense. Reste à attendre les autres avis

  3. #3
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    Bonsoir,

    pour ma part je voterais pas pour le copier coller,
    juste faire 2 constructeurs de classes différent :

    new A() // qui créé un nouveau contact
    new A(Contact c) // qui va initialiser les champs en fonction du contact, et le modifier

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut Merci pour vos réponse
    Merci pour vos réponses effectivement, je pourrais faire avec des constructeurs différents,je teste ça je posterais les résultats certainement demain sur ce forum, merci encore.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    heu moi j'aurais fait un JPanel qui me permet d'afficher un contact (ce n'est pas mon problème de savoir ce que l'on vas faire de moi moi j'affiche).
    et je l'integreré dans un autre JPanel qui lui change

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    JPanelContact myContactPanel = new JPanelContact(mode nouveau);
    // dans ce cas on affiche le bouton Crée par exemple
    myContactPanel.setMode(mode editer);
    // la on affiche le bouton enregistrer
    et les 2 boutons ont leur propre listener

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut toujours sur mon problème
    Bonjour,

    Je suis désolé, mais je n'ai pas compris ce que tu as voulus dire rolfone, le setMode(mode éditer),c'est quoi au juste?
    Je créer une classe jPanel et j'écrit une méthode setMode qui ajoutera un boutons différents avec son propre listener c'est ça?
    Ou bien je créer une classe qui hérite de jPanel et je lui donne deux constructeurs un qui donne le texte ("enregistrer") au boutons et un autre constructeur qui mettra comme texte ("valider les modifications) et mes listeners se feront sur le texte du boutons ça semble bon ça?
    Merci encore.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    effectivement mon explication est vraiment pas terrible la

    je ferais un class qui extend JPanel dans ce style

    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
    public class MonPanel extends JPanel {
     
    	private JButton nouveau = new JButton("Nouveau");
    	private JButton editer = new JButton("Editer");
            // le panel qui affiche un contact.
    	private PanelContact dispContact = new PanelContact( ... );
     
    	public MonPanel(){
    		// je mette en place tout mon bordel
    		this.add(dispContact, BorderLayout.CENTER);
     
    		nouveau.addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    // mon traitment pour le bouton nouveau 
                }
            });
    		editer.addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    // mon traitment pour le bouton editer 
                }
            });
     
    		//et on met le bouton nouveau par defaut 
    		this.setMode("Nouveau");
    	}
     
    	public void setMode(String mode){
    		if(mode.equals("Nouveau"){
    			//afficher le bouton Nouveau
    		}
    		if(mode.equals("Editer"){
    			//afficher le bouton Editer
    		}
    	}
    }
    tu comprend mieux ou c'est toujours flou?

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Comme tu peux le constater, il y a bien des façons de faire.
    Tu pourrais également :

    - faire une classe contenant la liste des éléments graphiques (s'appuyant sur un modèle ou recherchant les données dans son constructeur)
    - faire une classe étendant la première avec en plus les boutons d'actions

    (en mode affichage, le bouton "Enregistrer" ou "Supprimer" n'a pas de sens)

    Ou alors, comme ça a déjà été proposé, un constructeur avec un paramètre "mode de traitement" (type enum {Affichage, Mise à jour}) et des tests du mode pour savoir si on construit ou non l'élément graphique...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut
    Bonjour,

    Merci encore pour vos réponses tout fonctionne j'ai fait une classe qui hérite d'un JPanel avec deux constructeurs, comme vous me l'avez suggérer et ça fonctionne.
    Je ne sais pas mettre ce post en résolu si quelqu'un sais comment faire

  10. #10
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,
    tu as un bouton "resolu" tout en bas, il suffit de cliquer dessus !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Questions sur l'héritage multiple
    Par beegees dans le forum C++
    Réponses: 12
    Dernier message: 31/03/2008, 17h01
  2. Question sur l'héritage (débutant en C++)
    Par beegees dans le forum C++
    Réponses: 19
    Dernier message: 30/03/2008, 14h45
  3. petite question sur l'héritage et les cast
    Par baedal dans le forum Langage
    Réponses: 3
    Dernier message: 29/02/2008, 00h48
  4. Questions sur l'héritage dans Matisse
    Par Cassios dans le forum NetBeans
    Réponses: 8
    Dernier message: 14/03/2007, 23h23
  5. Question sur l'héritage
    Par the big ben 5 dans le forum Delphi
    Réponses: 28
    Dernier message: 06/06/2006, 17h27

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