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

 Java Discussion :

Changement JFrame à partir du JPanel


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 33
    Par défaut Changement JFrame à partir du JPanel
    Bonjour/soir à tous, j'ai besoin de changer la "Card" d'un JFrame à partir de son JPanel mais je me demande comment je peux accéder à ce JFrame à partir du JPanel. J'ai trouvé 2 solutions qui me semble un peu brouillon, la première est d'envoyé la frame via le constructeur du panel et la seconde de faire des getparents jusqu'a récupéré la jframe, je pense que le soucis vient surtout de la conception, si quelqu'un aurait des conseils

    voici le code :
    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
    import java.awt.BorderLayout;
    import java.awt.CardLayout;
     
    import javax.swing.JFrame;
     
     
    public class Gui extends JFrame {
    	PanneauLogin plog;
    	PanneauWebcam pweb;
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Gui fenetre = new Gui();
    	}
     
    	public Gui (){
    		this.plog=new PanneauLogin();
    		this.pweb=new PanneauWebcam();
    		this.setLayout(new CardLayout());
    		this.setSize(250,180);
    		this.setVisible(true);
    		this.setResizable(false);
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		this.add(plog,"Login");
    		this.add(pweb,"Webcam");
    	}
    }
    JPanel
    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
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
     
    public class PanneauLogin extends JPanel implements ActionListener {
     
    private JLabel lablog;
    private JLabel labmdp;
    private JTextField login;
    private JTextField mdp;
    private JButton envoi;
    	public PanneauLogin(){
    		this.login=new JTextField(20);
    		this.mdp=new JTextField(20);
    		this.envoi=new JButton("Se connecter");
    		this.envoi.addActionListener(this);
    		this.lablog = new JLabel("Login : ");
    		this.labmdp = new JLabel("MDP : ");
    		this.setLayout(new FlowLayout());
    		this.add(lablog);
    		this.add(login);
    		this.add(labmdp);
    		this.add(mdp);
    		this.add(envoi);
    	}
    	@Override
    	public void actionPerformed(ActionEvent action) {
    		if ((this.login.getText().length()==0)||(this.mdp.getText().length()==0))
    		{
    				System.out.println("Pas de login ou mdp");
    		}
    		else
    		{
    			// Changement de card
    		}
    	}
    }
    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Par défaut
    Hello Namastaz,

    Accéder au composant parent, c'est une pratique courante si on l'on veut éviter de passer des vues parentes aux vues filles.

    dans ton panel PanneauLogin, tu peux ajouter une méthode getParentFrame comme ceci :

    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
     
    import java.awt.BorderLayout;
    import java.awt.CardLayout;
     
    import javax.swing.JFrame;
     
      public class Gui extends JFrame {
            PanneauLogin plog;
            PanneauWebcam pweb;
            public static void main(String[] args) {
                // TODO Auto-generated method stub
                Gui fenetre = new Gui();
            }
     
            public Gui (){
                this.plog=new PanneauLogin();
                this.pweb=new PanneauWebcam();
                this.setLayout(new CardLayout());
                this.setSize(250,180);
                this.setVisible(true);
                this.setResizable(false);
                this.setDefaultCloseOperation(EXIT_ON_CLOSE);
                this.add(plog,"Login");
                this.add(pweb,"Webcam");
            }
     
            public JFrame getParentFrame(){
                if (getTopLevelAncestor() == null || !(getTopLevelAncestor() instanceof JFrame)) {
                    return null;
                }
                return ((JFrame)getTopLevelAncestor());
            }
        }
    Cette méthode te permet d'accéder à ton parent et avec le bon cast, tu accèdera au méthodes de JFrame customisée.

    Awane

Discussions similaires

  1. Changement liste2 à partir de choix liste1
    Par maxinfos dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 02/05/2007, 15h42
  2. Ouvrir une JFrame à partir d'une autre
    Par seyar666 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 09/03/2007, 15h53
  3. JFrame contenant un Jpanel et une scrollbar
    Par babarpapa dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 18/05/2006, 16h12
  4. JFrame contenant 2 JPanels
    Par arsenik7 dans le forum Agents de placement/Fenêtres
    Réponses: 18
    Dernier message: 04/01/2006, 15h33
  5. transmettre evenement d'une JFrame a un JPanel
    Par mereyj dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 18/06/2005, 18h52

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