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 :

Récupérer les variables d'une autre fenêtre


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 8
    Points
    8
    Par défaut [Résolu] Récupérer les variables d'une autre fenêtre
    Bonjour à tous.

    Je n'arrive pas à récupérer les variables d'une fenêtre fille, alors que j'ai bien écris les accesseurs, déclarés public.

    J'ai une première fenêtre, la principale, celle appelée dans le main, qui propose à l'utilisateur de créer une nouvelle fiche. Lorsque celui-ci clic sur l'item correspondant, une fenêtre modale s'ouvre, et lui propose de saisir des informations dans des JTextField. Ce sont ces informations que je voudrais récupérer dans ma fenêtre principale afin de pour m'en servir.

    Voilà, la méthode qui déclanche l'ouverture de la fenêtre modale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void newVehicule()
    	{
    		JDialog fenetre;
    		fenetre = new frmNouveauVehicule ();
     
    		// Affichage de la fenetre
    		fenetre.pack();
    		fenetre.setVisible (true);
     
                    // Tentative de récupération des variables
    		String numSerie;
    		numSerie = fenetre.getNumSerie();  // Souligné, ça marche pas
    		// Vehicule vehicule = new Vehicule();  //  je commente cette ligne car elle n'a rien à voir avec le probleme
    	}
    Enfin, voilà le code de ma fenetre fille :
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    public class frmNouveauVehicule extends JDialog implements ActionListener
    {
    	private JPanel monPanel; 	// Panel de la fenetre de menu 
    	private JLabel lMarque, lModele, lNumSerie, lEnergie;
    	public JTextField jtfMarque, jtfModele, jtfNumSerie;
    	private JComboBox jcbEnergie;
    	private final String[] energies = {"Essence", "Gazoil", "GPL"};
    	private JButton jbtOk, jbtAnnuler;
     
    	private boolean bValide;
     
     
    	public frmNouveauVehicule()
    	{
    		setTitle("Création d'une nouvelle fiche véhicule");
    		setSize (250,300);
    		setLocation(100,100);
    		setModal(true);
    		//setUndecorated(true);
    		//setAlwaysOnTop(true);
    		setDefaultCloseOperation (DISPOSE_ON_CLOSE);
    		setResizable (false);
     
    		// Creation d'un panel
    		monPanel = new JPanel ();
     
    		// Ajout du Panel à la fenêtre
    		getContentPane().add (monPanel);
     
    		// Creation et ajout d'un layout
    		GridBagLayout layout = new GridBagLayout();
    		GridBagConstraints contraintes = new GridBagConstraints();
     
    		monPanel.setLayout (layout);
    		contraintes.fill = GridBagConstraints.HORIZONTAL;
     
     
     
     
    		// Couleur du Panel
    		monPanel.setBackground (Color.lightGray);
     
     
    		// Mise en page
    		lMarque = new JLabel("Marque : ", SwingConstants.RIGHT);
    		lModele = new JLabel("Modèle : ", SwingConstants.RIGHT);
    		lNumSerie = new JLabel("Numéro de série : ", SwingConstants.RIGHT);
    		lEnergie = new JLabel("Energie : ", SwingConstants.RIGHT);
     
    		jtfMarque = new JTextField(16);
    		jtfModele = new JTextField(16);
    		jtfNumSerie = new JTextField(16);
     
    		jcbEnergie = new JComboBox (this.energies);
     
    		jbtOk = new JButton ("Ok");
    		jbtAnnuler = new JButton ("Annuler");
     
    		appliqueContraintes(contraintes, 0,0,1,1,20,100);
    		layout.setConstraints(lNumSerie, contraintes);
    		monPanel.add(lNumSerie);
     
    		appliqueContraintes(contraintes, 1,0,1,1,80,100);
    		layout.setConstraints(jtfNumSerie, contraintes);
    		monPanel.add(jtfNumSerie);
     
    		appliqueContraintes(contraintes, 0,1,1,1,100,100);
    		layout.setConstraints(lMarque, contraintes);
    		monPanel.add(lMarque);
     
    		appliqueContraintes(contraintes, 1,1,1,1,100,100);
    		layout.setConstraints(jtfMarque, contraintes);
    		monPanel.add(jtfMarque);
     
    		appliqueContraintes(contraintes, 0,2,1,1,100,100);
    		layout.setConstraints(lModele, contraintes);
    		monPanel.add(lModele);
     
    		appliqueContraintes(contraintes, 1,2,1,1,100,100);
    		layout.setConstraints(jtfModele, contraintes);
    		monPanel.add(jtfModele);
     
    		appliqueContraintes(contraintes, 0,3,1,1,100,100);
    		layout.setConstraints(lEnergie, contraintes);
    		monPanel.add(lEnergie);
     
    		appliqueContraintes(contraintes, 1,3,1,1,100,100);
    		layout.setConstraints(jcbEnergie, contraintes);
    		monPanel.add(jcbEnergie);
     
    		appliqueContraintes(contraintes, 0,4,1,1,100,100);
    		layout.setConstraints(jbtOk, contraintes);
    		monPanel.add(jbtOk);
     
    		appliqueContraintes(contraintes, 1,4,1,1,100,100);
    		layout.setConstraints(jbtAnnuler, contraintes);
    		monPanel.add(jbtAnnuler);
     
    		jbtOk.addActionListener(this);
    		jbtAnnuler.addActionListener(this);
     
    		bValide = false;
    	}
     
    	public void actionPerformed (ActionEvent e)
    	{
    		Object source; // Source l'objet
     
    		// Initialisation, pour savoir quel objet à déclanché l'action
    		source = e.getSource ();
    		if (source == jbtAnnuler)
    		{
    			annule();
    		}
     
    		if (source == jbtOk)
    		{
    			if (valideDonnees() == true)
    			{
    				this.setVisible(false);
    			}
    		}
    	}
     
    	private void appliqueContraintes(GridBagConstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy)
    	{
    		gbc.gridx = gx;
    		gbc.gridy = gy;
    		gbc.gridwidth = gw;
    		gbc.gridheight = gh;
    		gbc.weightx = wx;
    		gbc.weighty = wy;
    	}
     
    	private void annule()
    	{
    		this.dispose();
    	}
     
    	private boolean valideDonnees()
    	{
    		if (jtfNumSerie.getText().length() == 0)
    		{
    			JOptionPane.showMessageDialog(this, "Vous devez saisir un numéro de série");
    			lNumSerie.setForeground(Color.RED);
    			bValide = false;
    			return false;
    		}
     
    		if (jtfMarque.getText().length() == 0)
    		{
    			JOptionPane.showMessageDialog(this, "Vous devez saisir une marque de véhicule");
    			lMarque.setForeground(Color.RED);
    			bValide = false;
    			return false;
    		}
     
    		if (jtfModele.getText().length() == 0)
    		{
    			JOptionPane.showMessageDialog(this, "Vous devez saisir un modèle de véhicule");
    			lModele.setForeground(Color.RED);
    			bValide = false;
    			return false;
    		}
    		bValide = true;
    		return true;
    	}
     
    	/**
             * Accesseurs
             *
             * TODO To change the template for this generated type comment go to
             * Window - Preferences - Java - Code Style - Code Templates
             */
    	public String getNumSerie()
    	{
    		return this.jtfNumSerie.getText();
    	}
    	public String getMarque()
    	{
    		return this.jtfMarque.getText();
    	}
    	public String getModele()
    	{
    		return this.jtfModele.getText();
    	}
    	public String getEnergie()
    	{
    		return this.jcbEnergie.getSelectedItem().toString();
    	}
    }
    Vous remarquerez que mes accesseurs sont bien public...
    Si quelqu'un à une idée sur la façon de procéder...

    Grand merci d'avance.

    Antoine

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    entendons nous bien, tu voudrais que les données rentrées dans les TexField de la Dialog soient récupérées dans la fenêtre principale ?
    Peux-tu essayer avec la dialog non modale? Peux tu essayer de renvoyer "hello" dans un de tes accesseurs pour voir ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Salut.
    Merci pour ta réponse.

    Oui oui, c'est bien ça.
    Pour simplifier, j'aimerai simplement accéder aux methodes publiques de ma fenetre fille.

    En fait, je n'ai accès à aucune des méthodes de la fenêtre fille.

    J'ai essayé :
    - de la rendre non modale ---> marche pas
    - de l'hériter de JFrame au lieu de JDialog ---> marche pas
    - de l'hériter de rien du tout, donc ce n'est plus une fenetre --> ça marche, j'ai accès au méthodes.

    Je n'y comprend plus rien...

    Merci d'avance.
    Antoine.

  4. #4
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Dis donc t'aurais pu dire que t'avais une erreur à la compilation !!! Je pensais que ça marchait pas pour une raison inconnue !!! Ca m'aurait éviter d'avoir à le compiler chez moi !! En tous cas ça marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void newVehicule() 
       { 
          frmNouveauVehicule fenetre; 
          fenetre = new frmNouveauVehicule (); 
     
          // Affichage de la fenetre 
          fenetre.pack(); 
          fenetre.setVisible (true); 
     
                    // Tentative de récupération des variables 
          String numSerie; 
          numSerie = fenetre.getNumSerie();  // ça marche !!
       }
    Si tu déclares une JDialog, java la considère comme une JDialog, et c'est tout. Il faudrait éventuellement la caster pour accéder à ses propriétés étendues ou... la déclarer correctement dès le début.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Salut.
    Je suis mille fois désolé, mais je n'ai pas d'erreur de compilation, sinon, je te l'aurai dit biensûr. J'ai passé l'age de faire chercher les gens pour rien :o)

    Enfin, toujours est-il que ça ne marche pas pour moi....

    Je vais essayer avec ta soluce.

    Encore merci de m'aider, c'est sympa !

  6. #6
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Comment ça, ça ne marche pas pour toi ???? Je viens de le faire chez moi !!
    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 javax.swing.JDialog;
     
    public class VehiculeDialog
    {
     
    public static void main(String[] args)
    {
    	VehiculeDialog vd = new VehiculeDialog();
    }
     
    public VehiculeDialog()
    {
    	newVehicule();
    }
     
     
    private void newVehicule() 
       { 
          frmNouveauVehicule fenetre = new frmNouveauVehicule(); 
     
          // Affichage de la fenetre 
          fenetre.pack(); 
          fenetre.setVisible (true); 
     
                    // Tentative de récupération des variables 
          String numSerie; 
          numSerie = fenetre.getNumSerie();  // Souligné, ça marche pas 
          //Vehicule vehicule = new Vehicule();  // Idem :( 
     
          System.out.println(numSerie);
       }
     
       }
    Si tu crééc cette classe là et que tu la lances, ça donne quoi ?[/code]

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Re.

    Tu as raison, ça marche !!!!!!
    Par contre, je t'assure que j'avais pas d'erreur de compil.

    Merci beaucoups en tout cas !

  8. #8
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Allez zou un tag résolu pour fêter tout ça !!

    C'est possible que tu n'ai pas eu d'erreur de compilation si tu travailles sous un editeur qui t'EMPECHE d'écrire quelquechose qui provoquera une erreur (comme l'appel d'une méthode invisible). Comme je fais ça en ligne de commande forcément je découvre ça à la compilation.

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 24
    Points : 13
    Points
    13
    Par défaut jcombobox et récupération de l'item selectionné dans une autre classe sous jlabel
    bonsoir a tous; j'éspére que quelqu'un pourra m'aidé le plus vite possible!
    alors, j'ai deux interfaces une qui contient des combobox et un jtextArea ainsi qu'une jlist;
    l'autre interface contient des jlabel ou je veux récupérer ce qui a était choisi sur la première interface(c-à-d) quand je sélectionne un item sur la combobox je la trouve sur l'autre interface dans un jlabel.
    idem pour la jlist et le textarea
    j'ai boucoup essayé mais je n'est pas eu de résultat?
    j'attend vos réponse
    merci

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

Discussions similaires

  1. Récupérer les variables dans une autre page
    Par zozotitou dans le forum Langage
    Réponses: 11
    Dernier message: 25/11/2013, 10h59
  2. Réponses: 2
    Dernier message: 02/07/2009, 08h33
  3. Réponses: 21
    Dernier message: 18/11/2008, 14h36
  4. [C# 2.0] Récupérer une variable sur une autre fenêtre
    Par herrs dans le forum Windows Forms
    Réponses: 5
    Dernier message: 14/11/2006, 00h24
  5. Récupérer l'adresse d'une autre fenêtre
    Par AlLutun dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/11/2004, 10h19

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