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

Agents de placement/Fenêtres Java Discussion :

Retourner les valeurs d'une JFrame avant sa destruction


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre régulier Avatar de moomba
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 104
    Points
    104
    Par défaut Retourner les valeurs d'une JFrame avant sa destruction
    Bonjour

    Je construit un programme disposant d'une fenêtre principale (JFrame) qui gère à peut prés tout.
    Dans le menu "Fichier", j'ai ajouté une option "Nouveau" qui conduit à une autre JFrame contenant des JTextFields, des JButton, JLabel et même un JFileChooser.

    Seulement, je ne voit pas comment retourner les valeurs de cette JFrame vers la JFrame principale lorsque je clique sur le bouton "Valider".

    En effet, la JFrame principale construit la JFrame "Nouveau" mais continue ensuite le programme comme si de rien n'était. Je ne vais quand même pas mettre une boucle while pour surveiller la petite fenêtre !!

    Je suis débutant en Java, aussi je demande votre induglence devant cette question surement trivial

    Merci pour votre aide
    "Celui qui à le pouvoir de faire le mal, mais qui ne le fait pas, celui là est le prince de l'univers." (shakespeare)

  2. #2
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Salut,

    Le plus simple est de rendre ta seconde frame modal. Il suffit ensuite que ta frame secondaire stocke les valeurs défini par l'utilisateur dans des attribut de classe.

    Voici un exemple :
    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
    import javax.swing.JDialog;
    import javax.swing.JTextField;
     
    @SuppressWarnings("serial")
    public class FrameLogin extends JDialog {
     
    	private JTextField textField = new JTextField("");
     
    	public FrameLogin(FramePrincipal parent) {
    		super(parent);
    		this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);	
    		this.setModalityType(ModalityType.APPLICATION_MODAL);
    		this.add(this.textField);
    		this.pack();
    		this.setLocationRelativeTo(parent);
    	}
     
    	public String getLoginValue() {
    		return this.textField.getText();
    	}
     
    }
    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
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
     
    @SuppressWarnings("serial")
    public class FramePrincipal extends JFrame implements ActionListener {
     
    	private JButton btnFrame2 = new JButton("Login...");
     
    	public static void main(String[] args) {
    		FramePrincipal frame = new FramePrincipal();
    		frame.pack();
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    	}
     
    	public FramePrincipal() {
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.btnFrame2.addActionListener(this);
    		this.add(this.btnFrame2);
    	}
     
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		if (e.getSource() == this.btnFrame2) {
    			FrameLogin frame = new FrameLogin(this);
    			frame.setVisible(true);
    			String value = frame.getLoginValue();
    			System.out.println(value);
    		}
    	}
     
    }

  3. #3
    Membre régulier Avatar de moomba
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 104
    Points
    104
    Par défaut
    Bonjour

    merci pour cette réponse. J'ai utilisé ton principe de remplacer le JFrame par JDialog (donc modal) et en effet cela permet de stopper le programme.

    Seulement, ma JDialog contient de nombreux JTextfields, et je ne comprend pas comment récupérer plusieurs valeurs à la fermeture :

    return this.textField.getText();

    String value = frame.getLoginValue();
    Avec cela, on ne peut retourner qu'une seul valeur à la fois non ?

    Ne serait-il pas possible de faire que quand on ferme la JDialogue (en cliquant sur le bouton "valider"), elle reste en mémoire, puis le programme principale vas piocher les valeurs des JTextFIelds dedans, et enfin il détruit la JDialogue (dispose()) ?
    "Celui qui à le pouvoir de faire le mal, mais qui ne le fait pas, celui là est le prince de l'univers." (shakespeare)

  4. #4
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Dans mon exemple, je n'ai qu'un seul composant, rien ne t'empêche d'en avoir plusieurs. Tu écris alors plusieurs accesseurs comme je l'ai fait pour this.textField.getText().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String value1 = frame.getLoginValue(); 
    String value2 = frame.getMotDePasseValue();
    int value3 = frame.getAgeDuCapitaineValue();
    boolean value4 = frame.getTarteAuFraiseValue();
    Ne serait-il pas possible de faire que quand on ferme la JDialogue (en cliquant sur le bouton "valider"), elle reste en mémoire
    C'est déjà le cas.
    Si tu regarde le code que je t'ai donner le dispose est fait ce qui détruit (graphiquement) la fenêtre. Mais l'objet frame existe toujours ! Le dispose ne détruit pas l'objet. Tu n'a pas de destructeur d'objet en Java.

    , puis le programme principale vas piocher les valeurs des JTextFIelds dedans
    Même réponse, c'est déjà le cas.

  5. #5
    Membre régulier Avatar de moomba
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 134
    Points : 104
    Points
    104
    Par défaut
    OkiDoki, j'ai pigé !!

    Merci beaucoup, ça m'aide drôlement

    Ça vas me permettre de gagner pas mal de temps, au lieu d'essayer de contourner le problème en bidouillant

    Encore merci et bonne fin de weekend
    "Celui qui à le pouvoir de faire le mal, mais qui ne le fait pas, celui là est le prince de l'univers." (shakespeare)

  6. #6
    Futur Membre du Club
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    6
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 6
    Points : 5
    Points
    5
    Par défaut une autre question
    merci infiniment de l'aide que vous donner a tout le monde, c'est vraiment très utile et très indispensable pour nous, mais toujours nous avons a quoi chercher de nouveau, de ma part je pense qu'a chaque fois qu'on clique sur le bouton login ... une nouvelle fenêtre modal se régénère , comment affricher l'ancienne fenêtre seulement avec l'ancienne valeur, merci d'avance.

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

Discussions similaires

  1. Tester les valeur d'une liste déroulante
    Par st0nky dans le forum Langage
    Réponses: 1
    Dernier message: 04/12/2005, 14h52
  2. Récupérer les valeurs d'une GtkComboBox
    Par portos.lio dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 01/12/2005, 13h32
  3. Recuperer les valeurs d'une requette [C#]
    Par AlphonseBrown dans le forum C#
    Réponses: 7
    Dernier message: 22/11/2005, 16h36
  4. [Forms] Comment restreindre les valeurs d'une LOV
    Par popressay dans le forum Forms
    Réponses: 9
    Dernier message: 25/08/2004, 10h59
  5. intervertir les valeurs dans une colonne d'une table
    Par hammou dans le forum Débuter
    Réponses: 2
    Dernier message: 26/01/2004, 10h15

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