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 :

Passage d'un JFrame à une autre


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut Passage d'un JFrame à une autre
    Bonjour à toutes et à tous,

    je galère un peu pour le passage d'une fenêtre à une autre.
    Voici mon code :

    Code simplifié JFrame 1 : 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 CompressIHM extends JFrame
    {
    	public CompressIHM()
    	{/** CONSTRUCTEUR **/
    		// Donne le nom a la frame principale
    		super("Compression personnelle - v0.1a");
     
    		JButton jb_valider= new JButton("Suivant >");
    		jb_valider.addActionListener(new ActionListener()
    		{
    			public void actionPerformed(ActionEvent e)
    			{
    				new Compress("Compression personnelle - v0.1a", "abécédaire");
    			}
    		});
    		this.add(jb_valider);
    	}
    	public static void main(String[] args)
    	{/** MAIN - Fonction principale **/
    		JFrame compress= new CompressIHM();
    		compress.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		compress.pack();
    		compress.setVisible(true);
    		compress.setFocusable(true);
    		compress.setLocationRelativeTo(compress.getParent());
    	}
    }

    Code JFrame2 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Compress extends JFrame
    {
    	public Compress(String titre, String texte)
    	{
    		super(titre);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.pack();
    		this.setVisible(true);
    		this.setFocusable(true);
    		this.setLocationRelativeTo(this.getParent());
     
    	}
    }

    J'aimerai passé de la première fenêtre à la seconde, en masquant la première, mais je bloque. Je me pose aussi la question, ne dois-je pas faire de main pour la seconde fenêtre ( qui m'appelera le constructeur ensuite, comme fait pour JFrame1 ? )

    et désolé pour les questions de newbs
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Hehe ce genre de question reviens souvent (on devrait la mettre dans la Faq), tout bon débutant en GUI Java se pose un jour la question existentielle : mais comment faire pour se ballader dans plusieurs fenêtre ?

    C'est en faire très simple une fois qu'on a compris comment marche Java :
    pour faire apparaitre une JFrame --> setVisible(true);
    pour la cacher --> setVisible(false);
    pour la détruire (tout rappel de l'instance donnera donc NullPointerException) --> dispose();

    La plupart du temps, on ne réutilisera pas l'ancienne fenêtre, il vaut mieux utiliser dispose qui cache et détruit la fenêtre et donc libère de l'espace mémoire. Si par contre tu penses réutiliser l'ancienne fenêtre, bah utilises setVisible(false).

    Dans le code que tu donnes, tout est clair (enfin, pour moi ), ta classe Compress a un bon constructeur (tu initialises bien les différentes valeurs importantes pour crées une JFrame basique), donc dans ta première classe, tu fais bien de faire new Compress("", "");

    Il te suffira d'ajouter à la suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CompressIHM.this.dispose();
    Il est obligé de mettre CompressIHM.this car ton code est situé dans une classe anonyme (tu fais new ActionListener() {...}) donc pour le compilateur tu n'es plus dans la classe CompressIHM mais dans la classe new ActionListener, toutes les appels méthodes sans des instances explicites seront rapportés à ActionListener. En faisant CompressIHM.this, tu dis que tu veux appliquer la méthode dispose() sur l'instance actuelle de CompressIHM.

    Un petit conseil pour plus de légèreté au niveau de la méthode main : mets ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    compress.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		compress.pack();
    		compress.setVisible(true);
    		compress.setFocusable(true);
    		compress.setLocationRelativeTo(compress.getParent());
    dans le constructeur de CompressIHM, c'est plus logique, tu pourras plus facilement créer une fenêtre CompressIHM à partir d'une autre classe par exemple. Bonne chance.

  3. #3
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Un big pour ces explications claires et précises.

    En plus, tellement fort que t'as répondu à la question que j'allais te poser avant que je te la pose

    pour le Compress.this.x(), j'aurai jamais trouvé, et pourtant, une fois expliqué, c'est tellement logique

    aussi pour l'amélioration du code, c'est ce que je cherchais à faire

    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

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

Discussions similaires

  1. [XL-2010] Passage d'excel vers une autre application
    Par SSelim dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/10/2012, 10h50
  2. Réponses: 7
    Dernier message: 18/02/2012, 02h37
  3. [HTML] Passage valeurs page html à une autre
    Par jpclutier dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/03/2007, 10h00
  4. Passage de paramétre dans une autre page
    Par olivier94 dans le forum Langage
    Réponses: 8
    Dernier message: 08/03/2007, 12h21
  5. Passage d'infos dans une autre frame
    Par dumser1 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 23/11/2005, 10h28

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