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 :

Passage de paramètres


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Passage de paramètres
    bonjour,
    je suis confronté a un petit probleme de passage de parametre au travers d'une structure type mvc. java etant nouveau pour moi, il est possible que je soit passé a coté d'un concept evident.

    Pour resumer la mise en situation :

    FramePrincipale est ma frame principale dans une classe

    Pan_connexion est un Jpanel appelé par la FramePrincipale (parmis d'autre)
    on y trouve un bouton valider qui est abonné a un listener

    Dans ma classe listener(c'est mon controleur)j'appelle mon model(et l'action a realisé--->un controle de login+MDP avec un Jdialog pour remercier l'utilisateur)

    App_PanConnexion est mon model : c'est ici qu'en plus d'afficher un dialogbox je voudrai ou pas griser des options du menu contenu dans ma FramePrincipale.

    MA JFRAME
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    public class FramePrincipale extends JFrame {
     
        private static final long serialVersionUID = 1L;
        private JMenuBar jJMenuBar = null;
        private JMenu jMenu2 = null;
        private JMenuItem jMenuItem2 = null;
        private JMenuItem jMenuItem111 = null;
        private JMenuItem jMenuItem121 = null;
        private JMenu jMenu14 = null;
        private JMenuItem jMenuItem18 = null;
        private JMenuItem jMenuItem131 = null;
        private JMenu jMenu111 = null;
        private JMenu jMenu121 = null;
        private JMenuItem jMenuItem141 = null;
        private JMenu jMenu131 = null;
        private JMenuItem jMenuItem161 = null;
        private JMenuItem jMenuItem171 = null;
     
        /**
         * This is the default constructor
         * @throws ClassNotFoundException 
         * @throws InstantiationException 
         * @throws IllegalAccessException 
         * @throws SQLException 
         */
        public FramePrincipale() throws SQLException, IllegalAccessException, InstantiationException, ClassNotFoundException {
            super();
            initialize();
            pack();
     
        }
     
        /**
         * This method initializes this
         * 
         * @return void
         * @throws ClassNotFoundException 
         * @throws InstantiationException 
         * @throws IllegalAccessException 
         * @throws SQLException 
         */
        private void initialize() throws SQLException, IllegalAccessException, InstantiationException, ClassNotFoundException {
            this.setSize(756, 470);
            this.setPreferredSize(new Dimension(756, 470));
            this.setResizable(false);
            this.setJMenuBar(getJJMenuBar());
            this.setTitle("A voir");
     
            this.setContentPane(new Connexion());
    public JMenuBar getJJMenuBar() {
    		if (jJMenuBar == null) {
    			jJMenuBar = new JMenuBar();
    			jJMenuBar.setPreferredSize(new Dimension(20, 20));
    			jJMenuBar.add(getJMenu2());
    			jJMenuBar.add(getJMenu14());
    			jJMenuBar.add(getJMenu111());
    			jJMenuBar.add(getJMenu121());
    			jJMenuBar.add(getJMenu131());
    		}
    		return jJMenuBar;
    	}
     
    	/**
             * This method initializes jMenu2       
             *      
             * @return javax.swing.JMenu    
             */
    	public JMenu getJMenu2() {
    		if (jMenu2 == null) {
    			jMenu2 = new JMenu();
    			jMenu2.setText("Fichiers");
    			jMenu2.setVerticalAlignment(SwingConstants.CENTER);
    			jMenu2.add(getJMenuItem2());
    			jMenu2.add(getJMenuItem111());
    			jMenu2.add(getJMenuItem121());
                            jMenu2.setVisible(false);
    		}
    		return jMenu2;
    	}
    //------------------------LE CODE EST VOLONTAIREMENT TRONQUE MERCI--------//
    MA VUE
    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
    public class Connexion extends JPanel {
     
        private JLabel jLabel = null;
        private JLabel jLabel1 = null;
        private JTextField jTextField = null;
        private JButton jButton = null;
        private JPasswordField jPasswordField = null;
        private JLabel jLabel2 = null;
     
     
        public Connexion() throws SQLException, IllegalAccessException, InstantiationException, ClassNotFoundException {
     
     
            super();
            initialize();
            addListeners();
     
        }
     
    {---------------LE CODE EST ALLEGE--------------------}
    public void addListeners() throws SQLException, IllegalAccessException, InstantiationException, ClassNotFoundException{
     
            Listen_Connexion listen=new Listen_Connexion(this);
            jButton.addActionListener(listen);
     
     
        }
    MON CONTROLLEUR
    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
    public class Listen_Connexion implements   ActionListener {
        App_Connexion application;
        Connexion parent ;
     
     
     
        public Listen_Connexion(Connexion parent) throws SQLException, IllegalAccessException, InstantiationException, ClassNotFoundException {                                //Constructeur
            this.parent=parent;
     
            this.application=new App_Connexion(parent);
     
     
    }
     
        public void actionPerformed(ActionEvent e) {
            Object sourceEvenement = e.getSource();
     
     
     
            if (sourceEvenement instanceof JButton){
                String labelJbut = ((JButton)sourceEvenement).getName();
     
                if(labelJbut.equals("ButVal"))
            application.Authentification();
                }
     
     
    }
    }
    MON MODEL
    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
     
    public class App_Connexion {
    	Connexion parent;
     
     
     
    	public App_Connexion(Connexion parent){
    		this.parent=parent;
     
     
    	}
     
     
    public void Authentification(){
    	char[] password = parent.getJPasswordField().getPassword();
    	  String pass="";
    	  String ID=parent.getJTextField().getText();
    	  for(int i=0;i<password.length;i++) pass= pass+password[i];
    	  Connection conn=Access_JDBC.connecter(ID,pass);
    	 try {
    		if(conn.isValid(5)){Message mess = new Message("Bienvenue "+ID, "Connexion");
     
    		if(ID.equals("TOTO")){
     
    			//ICI JAIMERAI METTRE QUELQUE CHOSE DU TYPE    parent.getParent().getJMenu2.setvisible(true);
     
    			}
     
     
    		}
     
    	} catch (SQLException e) {
     
    		e.printStackTrace();
    	}catch(NullPointerException e){
    		Message mess = new Message("Connexion invalide", "Connexion");
    		e.printStackTrace();
    	}
     
     
     
    }
    }
    Désolé pour la longueure du post mais j'ai bien essayé de specifier dans le constructeur de ma classe connexion le parametre d'entrée Jframe (public Connexion(FramePrincipale frame).............etc) de facon a le recuperer dans mon model et pouvoir agir sur le menu mais je n'y arrive pas!


    Merci pour ceux qui arriveront a comprendre!

  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
    Pour le mvc regarder ici et la.

    La logique voudrait que le model possède une instance de ta fenêtre et appel la méthode "afficheJDialog".
    Mais ça ne fait pas très MVC. Donc pour contourner le problème, il faut utiliser le pattern observer.

    Une solution simplifier pour ton problème :
    Ta Jframe ton implements ModelListener
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface ModelListener extends EventListener {
        void afficherJDialog();
    }
    Ta frame redéfinie donc la méthode afficherJDialog pour afficher un JDialog ( la nom de méthode est dur à comprendre )
    Ensuite, ton model doit contenir une instance EventListener ou une liste EventListenerList.
    Cette instance de EventListener pointe en faite sur ta fenêtre. (tu me suis)
    A partir de ton modèle il ne reste plus qu'à appeler la méthode afficherJDialog avec l'EventListener
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonEventFrame.afficherJDialog();
    Mais tout est expliqué dans les 2 liens ci-dessus

  3. #3
    Invité
    Invité(e)
    Par défaut passage parametre
    Merci bcp d'avoir pris la peine de me repondre!
    et en plus tres rapidement vu l'heure!!!!
    Oui je pense te suivre, il faut maintenant que j'essaie ca!

    en fait entre temps, je suis parvenue a une solution peut etre moins elegante je ne sais pas...(merci l'abonnement au topic de m'avoir laisser bosser sans me notifier la reponse lol )

    En tous cas, je vais essayer egalement ta methode, ca sera une bonne facon d'apprendre...

    je vais succintement decrire ma solution que j'ai mis en oeuvre :
    Dans ma vue (mon jpanel donc qui contient le bouton valider abonné au listener)
    j'ai rajouté au constructeur de la classe non pas la Jframe (ca marche pas ) mais le Jmenu instancié dans la Jframe FramePrincipale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public class Connexion extends JPanel.........
    public Connexion(JMenuBar jMenuBar) throws SQLException,............
    Au niveau du model, je peux le reuperer de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public App_Connexion(Connexion parent)...........//constructeur
    public void Authentification(){
    parent.jMenuBar.getMenu(0).setVisible(true);
                    parent.jMenuBar.getMenu(0).getMenuComponent(0).setVisible(false);}
    PS: le code n'est pas complet bien entendu!

Discussions similaires

  1. [Forms]Passage de paramètre entre Forms et Reports
    Par jack554 dans le forum Reports
    Réponses: 4
    Dernier message: 30/03/2004, 13h58
  2. probleme lors du passage de paramètre
    Par maxmj dans le forum ASP
    Réponses: 4
    Dernier message: 18/11/2003, 00h15
  3. [XSL] Passage de paramètres à un template
    Par pantin dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/06/2003, 13h28
  4. passage de paramètres
    Par pram dans le forum XMLRAD
    Réponses: 5
    Dernier message: 18/02/2003, 17h28
  5. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47

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