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 :

Communication entre un JMenu et un JPanel


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Communication entre un JMenu et un JPanel
    Bonjour , voici mon code, les actions de mon jMenu :

    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
     
    public void actionPerformed(ActionEvent e) {
     
            String action = e.getActionCommand();
     
            if (action.equals("Normal")){
                this.setSize(400, 400);
            }else if(action.equals("Plein Ecran")){
            	this.setExtendedState(Frame.MAXIMIZED_BOTH);//Mode Plein ecran
            }else if(action.equals("Quitter")){//Fermer le programme
                System.exit(0);
            }
            else if(action.equals("CommencerPartie")){
     
     
            }
    A ce moment quand je clique sur "CommencerPartie" j'aimerais qu'une fenetre de dialogue avec des Label et des TextField s'ouvre qui va pouvoir communiquer avec mon JPanel qui contient et recupérer les informations comme la taille de la grille et dessiner la grille en fonction de ses dimensions.
    Merci.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ça se fait exactement de la même manière que dans n'importe quel cas, où dans une méthode, on créé une instance d'une classe en lui passant des paramètres collectés dans la classe où cette méthode est définie.

    Crées une classe qui représente ta nouvelle fenêtre (donc une classe qui étend JFrame par exemple), que tu construiras en y ajoutant les champs que tu veux : le constructeur de cette classe doit avoir les paramètres qui permettent de passer les informations que tu veux, et dans le bloc if de l'actionPerformed (ou tu gères le cas "CommencerPartie"), il te suffit d'aller chercher les valeurs de ses paramètres, de les passer au constructeur de la fenêtre lors du "new", et de faire setVisible(true) sur l'instance de cette JFrame pour l'afficher et voilà.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Pouvez vous me donner un exemple simple pour illustrer cela s'il vous plait.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Bah en gros :

    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
    public class ExempleFrame extends JFrame {
     
        public class ExempleFrame(String paramTruc) {
              super("Titre");
     
              JPanel panel = new ...
     
     
              field = new JTextField();
              field.setText( paramTruc ); // la valeur affichée dans le jtextfield est la valeur passée en paramètre
     
              panel.add( field ... )
     
     
        }
     
     
    }
    et l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    else if(action.equals("CommencerPartie")){
     
               String param = methodeQuiVaChercherLaValeurDuParametre();
     
                ExempleFrame frame = new ExempleFrame(param);
     
                 frame.setSize(...) ...
     
     
                 frame.setVisible(true);
     
    }
    et par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    protected String methodeQuiVaChercherLaValeurDuParametre() {
        return unTextField.getText();
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Le soucis c'est que je n est pas un String en paramètre mais une classe. Voici ma fenetre 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
    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
     
    public class Fenetre extends JFrame implements ActionListener
    {
        private static final long serialVersionUID = 1L;
     
        public Fenetre(){
     
     
        	JComponent central = new Main(); // le main
        	//JComponent right = new PanelDroit(new CaseTerrain());
     
        			this.getContentPane().setLayout(new BorderLayout());
        			this.getContentPane().add(central,BorderLayout.CENTER);
     
        			//this.getContentPane().add(right,BorderLayout.EAST);
     
        			//info.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
        			//right.setLayout(new BoxLayout(right,BoxLayout.Y_AXIS));
        			this.setJMenuBar(this.creationJmenu());
        }
        private JMenuBar creationJmenu(){
     
            //Création des Objets
            JMenuBar jmb = new JMenuBar();
     
            JMenu menu = new JMenu("Jeu");
            JMenu edit = new JMenu("Editer");
            JMenu taille = new JMenu("taille");
     
            JMenuItem itemQuitter = new JMenuItem("Quitter");
            JMenuItem itemPartie = new JMenuItem("CommencerPartie");
            JMenuItem itemNormal = new JMenuItem("Normal");
            JMenuItem itemPecran = new JMenuItem("Plein Ecran");
     
            //Raccourcis clavier
     
            itemQuitter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_J,InputEvent.CTRL_DOWN_MASK));
            itemPecran.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_DOWN_MASK));
     
            //Ajout des JMenuItem au JMenu
            menu.add(itemPartie);
            menu.add(itemQuitter);
     
     
            taille.add(itemNormal);        
            taille.add(itemPecran);
     
            edit.add(taille);
     
     
            //Ajout des JMenu au JmenuBar
     
            jmb.add(menu);
            jmb.add(edit);
     
     
            //Ajout des listener au JMenuItem
     
            itemPartie.addActionListener(this);
            itemQuitter.addActionListener(this);
            itemNormal.addActionListener(this);
            itemPecran.addActionListener(this);
     
            return jmb;
        }
     
     
        public void actionPerformed(ActionEvent e) {
     
            String action = e.getActionCommand();
     
            if (action.equals("Normal")){
                this.setSize(400, 400);
            }else if(action.equals("Plein Ecran")){
            	this.setExtendedState(Frame.MAXIMIZED_BOTH);//Mode Plein ecran
            }else if(action.equals("Quitter")){//Fermer le programme
                System.exit(0);
            }
            else if(action.equals("CommencerPartie")){
            	// ici je veux ouvrir une fenetre qui va me permettre de communiquer avec le Main qui est un JPanel
     
            }
     
        }
     
        public static void main(String[]args){
     
        	Fenetre fen = new Fenetre();
        	fen.setSize(500, 500);
        	fen.setVisible(true);
        }
    La classe Main
    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
     
    public class Main extends JPanel  {
    	private EtatDePartie etatDePartie;
    	private GrilleJeu grilleJeu;
     
     
    	public ConqueteMain() {
     
     
    		initLayout();
    		EvenementsPartie.debutPartie(etatDePartie);
    	}
     
     
     
    	private void initLayout() {
    		CreationGrille grille = new CreationGrille(grilleJeu, joueurs,etatDePartie);// classe qui dessine ma grille
     
    		this.setLayout(new BorderLayout());
    		this.add(grille);
    Alors voila j'ai une classe Fenetre quand je vais cliquer sur commencer partie une fenetre va me demander les dimensions de la grille x et y et lorsque j'aurais appuyer sur valider la grille va se dessiner dans le panel(la classe Main) avec les dimensions entrées.
    Merci de votre aide.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Sujet résolu excusez moi pour le dérangement

Discussions similaires

  1. Communication entre deux JPanel
    Par poutou138 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 20/05/2014, 14h16
  2. Lecture standard et communication entre processus!
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/07/2003, 16h37
  3. Communication entre processus
    Par markopolo dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/06/2003, 16h21
  4. Réponses: 5
    Dernier message: 25/03/2003, 19h43
  5. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05

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