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

Interfaces Graphiques en Java Discussion :

Navigation entre Frames


Sujet :

Interfaces Graphiques en Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Par défaut Navigation entre Frames
    Bonjour,

    Je suis un grand débutant en ce qui concerne le Java, donc je m'excuse par avance si le topic n'est pas dans la bonne section car je ne savais pas trop où le poster.

    Voici rapidement mon problème:

    J'ai un projet scolaire à faire en Java. Et je bute facilement sur certains points qui doivent sembler évidents pour certains. Mes cours ou les quelques tutoriaux ne m'ayant pas encore permis de comprendre certaines choses.

    En gros, je dois faire un jeu :

    Que voici :



    Le jeu en lui même est (quasiment) terminé (C'est un simple Bubble Shooter ^^).
    Le problème c'est que je suis censé faire un menu dit d'accueil avec des boutons -> Jouer / High Scores / Credits / etc...

    Je ne comprends absolument pas comment on peut "changer" de frame/ Naviguer.

    Je n'ai malheuresement pas encore bien saisi le concept de classe.
    Mon programme est sur une seule Visual Class. Mais dans ce cas là, j'imagine qu'il faudra que je fasse autant de classes que d' "écrans".
    Et j'aurais aimé savoir la méthode globale pour naviguer entre ces pages.

    Merci.

  2. #2
    T2!
    T2! est déconnecté
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 46
    Par défaut
    Salut,

    Je suppose que ton application tient, pour l'instant, dans une Frame (AWT) ou une JFrame (SWING). Mais une application peut en comporter autant que tu veux. Et tu as raison de penser qu'en général il y a autant de classes dérivées de frame que d'écrans différents.

    Comment jongler avec les frame ? C'est assez simple. Une frame possède une propriété de visibilité qui est un booléen. En appelant maFrame.setVisibility(true) tu fais apparaître maFrame. Avec maFrame.setVisibility(false) tu la fais disparaître.

    Ces instructions vont devoir être associées à des boutons ou des options de menu (je veux dire bien entendu dans les écouteurs de ces composants) selon la navigation que tu souhaites dans ton application.

    Si ma réponse est trop basique, pose une question un peu plus précise.

    T2!

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Par défaut
    C'est exactement la réponse que j'attendais. Merci

    Par contre, j'ai essayé et eclipse ne semble pas reconnaitre le setVisibility , y aurait-il quelquechose à importer au départ ?

  4. #4
    T2!
    T2! est déconnecté
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 46
    Par défaut
    Mille excuses, c'est setVisible le nom de la fonction en question.

    T2!

  5. #5
    T2!
    T2! est déconnecté
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 46
    Par défaut
    Ci dessous un exemple de deux fenêtres. La fenêtre principale n'affiche qu'un bouton. En cliquant dessus, tu fais apparaître une seconde fenêtre (qui est vide). La croix de cette seconde fenêtre la fait disparaître.

    T2!

    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
     
    package gui.swing;
     
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
     
    public class FenetrePrincipale extends JFrame {
     
    	public class EcouteurBouton implements ActionListener {
     
    		@Override
    		public void actionPerformed(ActionEvent arg0) {
    			getFenetreSecondaire().setVisible(true);
    		}
     
    	}
     
     
    	private	JButton	boutonFenetreSecondaire = null;
    	private FenetreSecondaire fenetreSecondaire = null;
     
    	public FenetreSecondaire getFenetreSecondaire() {
    		if (fenetreSecondaire == null) {
    			fenetreSecondaire = new FenetreSecondaire(this);
    		}
     
    		return fenetreSecondaire;
    	}
     
     
    	public FenetrePrincipale() {
    		super("Ma fenêtre principale");
     
    		setPreferredSize(new Dimension(300,200));
    		pack();
     
    		getContentPane().add(this.getBoutonFenetreSecondaire());
     
     
    	}
     
     
    	public JButton getBoutonFenetreSecondaire() {
    		if (boutonFenetreSecondaire == null) {
    			boutonFenetreSecondaire = new JButton("Fenêtre secondaire");
    			boutonFenetreSecondaire.addActionListener(new EcouteurBouton());
    		}
     
    		return boutonFenetreSecondaire;
    	}
    }
    La seconde Fenetre :

    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
     
    package gui.swing;
     
    import java.awt.Dimension;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import javax.swing.JFrame;
     
    public class FenetreSecondaire extends JFrame {
     
    	public class EcouteurFenetre extends WindowAdapter {
     
    		@Override
    		public void windowClosing(WindowEvent e) {
    			setVisible(false);
    		}
     
    	}
     
    	public FenetreSecondaire(FenetrePrincipale fenetrePrincipale) {
    		super("Ma fenêtre secondaire");
     
    		setPreferredSize(new Dimension(400,300));
    		setLocation(300, 0);
    		pack();
     
    		this.addWindowListener(new EcouteurFenetre());
    	}
     
    }

  6. #6
    Invité
    Invité(e)
    Par défaut
    bonjour,
    si j'ai bien compris ton problème tu doit lors d'un clique sur le bouton commencer par exemple : afficher la fenêtre du jeu, lors du clique sur le bouton high score afficher les score du jeu....
    pour faire ça tu n'as besoin que d'une seule frame qui contient plusieurs Panel ou jPanel chacune contenant des composantes différentes selon ton besoin(un panel pour le jeu, un panel pour high score, ...).
    lors d'un clique sur un bouton tu rend visible le panel conçerné et non visibles les autres avec la méthode setvisible(boolean).

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Le CardLayout est fait pour ça : il permet de superposer des panels, et de n'en rendre visible qu'un seul à la fois.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2012
    Messages : 1
    Par défaut
    Bonjour,

    J'ai un problème dans mon projet ...
    J'ai plusieur JFrame (10 ^^) mais je n'arrive pas à naviguer entre elles ...

    en effet, je voulais ( comme je le fais d'habitude) créer une instance de chaque JFrame pour pouvoir ensuite faire
    fichPref.setVisible(false);
    fichMenu.setVisible(true);
    (par exemple)

    Seulement voilà ... je n'arrive pas à créer une instance de chacune de mes JFrame (je sais ... ça parait ridicule comme problème ^^)

    Lorsque je fais:
    fichPref = new FPref();
    fichMenu = new FMenu();

    ça bug ... mais pas pour chaque JFrame.
    En recherchant un peu d'où venait le problème, j'ai crut comprendre que je ne pouvais pas faire ça lorsque la JFrame était la fiche "mère" de ma JFrame ... j'ai pensé faire
    fichPref = this.getParent();
    Mais le problème, c'est qu'on ne sait jamais quel est le parent de chaque JFrame (puisqu'on peut se "ballader" dans tous les sens entre mes JFrame)

    Voilà ...
    ça me parait bizzarre comme problème ... et ce qui me parait le plus étrange, c'est que personne n'en parle sur internet .... je serai donc la seule à le rencontrer ?!?

    Si quelqu'un a une idée ....

Discussions similaires

  1. [XL-2010] Navigation entre diverses textbox et frame d'un userform
    Par Naaby dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/06/2011, 18h34
  2. dialogue entre frames
    Par funkadelic dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/12/2005, 11h09
  3. Réponses: 1
    Dernier message: 25/09/2005, 17h52
  4. lien entre frame
    Par zorglub88 dans le forum MFC
    Réponses: 16
    Dernier message: 07/06/2005, 11h54
  5. [Forms] : Gestion de Navigation entre module
    Par patmaba dans le forum Forms
    Réponses: 12
    Dernier message: 09/04/2004, 14h09

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