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 :

Atteindre un objet parent


Sujet :

AWT/Swing Java

  1. #1
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut Atteindre un objet parent
    Bonjour,

    J'aurais besoin d'un conseil. J'ai créé un bouton personnalisé (MyButton) qui réagit au clic. Je voudrais que dès que je clique, ce bouton fasse appel à une méthode d'un de ses objets parents (MyWindow).

    J'ai utilisé une succession de getParent() mais cela me renvoit une erreur comme quoi l'objet retourné doit être un container. Hors, mon objet MyWindow est une extension de JFrame qui est un Container.

    Si quelqu'un peut m'aider...
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  2. #2
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Slu
    c quoi la solution ?

  3. #3
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Passage de paramètres par référence.
    "Il est plus facile de décomposer un problème en ses éléments, forcément plus simples, que de le traiter en sa totalité." (R. Descartes)

    Freelance iOS

  4. #4
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Thx

    est il possible d atteindre a partir d une classe anonyme, la classe ou se situe la classe anonyme ?

  5. #5
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    avec un (UneClasse)this.getParent() caster avec le nom de ta classe parente.

  6. #6
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par BiMouXeTTe
    avec un (UneClasse)this.getParent() caster avec le nom de ta classe parente.
    thx mais ca ne marche pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class NewGame extends JDialog{
    public NewGame(){
     
    Ok.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    ((NewGame)this).getParent() // je n accede pas a dispose() qui est une fonction de JDialog
    }
    }
    }

  7. #7
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Le mieux est encore que tu fasses une méthode disposer() dans ta classe parente et quand tu es dans ta classe anonyme tu appeles disposer();. Mais si ta classe hérite de JDialog tu fais getParent().dispose(); et ça suffit (sans le cast).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void disposer()
    {
       dispose();
    }

  8. #8
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par BiMouXeTTe
    Le mieux est encore que tu fasses une méthode disposer() dans ta classe parente et quand tu es dans ta classe anonyme tu appeles disposer();. Mais si ta classe hérite de JDialog tu fais getParent().dispose(); et ça suffit (sans le cast).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void disposer()
    {
       dispose();
    }
    j ai pas encore essaye avec une fonction .. mais avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((JDialog)getParent()).dispose();
    ca ne marche pas
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getParent()).dispose();
    [/quote]

  9. #9
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Je viens de l'essayer, il faut caster avec Dialog, JDialog ou Truc :

    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
    import java.awt.Button;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JDialog;
     
    public class Truc extends JDialog
    {
    	private static final long serialVersionUID = 1L;
     
    	public Truc()
    	{
    		Button Ok = new Button("test");
    		Ok.addActionListener(new ActionListener() {
    	         public void actionPerformed(ActionEvent e)
    	         {
    	        	 ((JDialog)getParent()).dispose();
    	         }
    		});
    	}
    }
    EDIT : Il ne faut pas le faire dans la même classe que le main ni dans une classe ou une méthode statique.

  10. #10
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    en faisant

    JDialog Dialog;

    et

    Dialog = this; dans le constructeur


    puis Dialog.dispose(); dans la classe anonyme ca marche

  11. #11
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    C'es capilotracté dis donc...

    Ta classe hérite bien de JDialog au moins ?

  12. #12
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    voici l ensemble:

    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
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
     
    public class NewGame extends JDialog{
    	int NbRadioButtons = 0;
    	JRadioButton[] RadioButtons;
    	ButtonGroup Group;
    	JPanel Pane;
    	JPanel PaneSouth;
    	JButton Ok;
    	JButton Quit;
    	//JDialog Dialog;
     
    	public NewGame(){
    		setTitle("Nouvelle partie");
    		//Dialog = this;
    		setLocationRelativeTo(getParent());
     
    		setLayout(new BorderLayout());
    		Pane = new JPanel();
    		Pane.setLayout(new GridLayout(3, 3));
    		PaneSouth = new JPanel();
     
    		Ok = new JButton("Ok");
    		Quit = new JButton("Quitter");
     
    		NbRadioButtons = 3;
    		RadioButtons = new JRadioButton[NbRadioButtons];
    		RadioButtons[0] = new JRadioButton("10 x 10");
    		RadioButtons[0].setActionCommand("10x10");
    		RadioButtons[0].setSelected(true);
    		RadioButtons[1] = new JRadioButton("15 x 15");
    		RadioButtons[1].setActionCommand("15x15");
    		RadioButtons[2] = new JRadioButton("20 x 20");
    		RadioButtons[2].setActionCommand("20x20");
     
    		Group = new ButtonGroup();
    		for ( int i = 0 ; i < NbRadioButtons ; i++){
    			Group.add(RadioButtons[i]);
    			Pane.add(RadioButtons[i]);
    		}
     
    		PaneSouth.add(Ok);
    		PaneSouth.add(Quit);
     
    		add("South", PaneSouth);		
    		add("Center", Pane);
     
    		Ok.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String Rep = Group.getSelection().getActionCommand();
     
    				int NbBuisson = 5, NbMouton = 5;
     
    				if (Rep == "10x10")
    					MainFrame.NewGame (10, 10, NbBuisson, NbMouton);
    				else if (Rep == "15x15")
    					MainFrame.NewGame (15, 15, NbBuisson, NbMouton);
    				else if (Rep == "20x20")
    					MainFrame.NewGame (20, 20, NbBuisson, NbMouton);
    				else
    					MainFrame.NewGame (10, 10, NbBuisson, NbMouton);
     
    				//Dialog.dispose();
    				((JDialog)getParent()).dispose(); 
     
     
    			}
    		});
     
    		Quit.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				System.exit(0);
    			}
    		});
     
    		pack();
    		setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
     
    		validate();
    		setVisible(true);
    		setResizable(false);
    		//Dialog.setModal(true);
    	}
     
    	public void ShowMainframe(String theRep){
     
    	}
    }
    la ca compile mais la fenetre ne se ferme pas

  13. #13
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Ah mais le parent est un Panel !!!

    Il faut prendre le parent du parent du parent ou un truc comme ca.

  14. #14
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    T'as oublié de dire que ca générais un ClassCastException aussi.

  15. #15
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    ClassCastException ???? c quoi??

  16. #16
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    C'est l'exception générée avec ton code : Mauvais Cast venant effectivement de (JDialog)getParent() au moment ou on clique sur le bouton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { disposer(); } });
    Dans ta classe NewGame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private void disposer() { dispose(); }
    Sinon ça ca marche bien et c'est pas trop sale

  17. #17
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par BiMouXeTTe
    C'est l'exception générée avec ton code : Mauvais Cast venant effectivement de (JDialog)getParent() au moment ou on clique sur le bouton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { disposer(); } });
    Dans ta classe NewGame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private void disposer() { dispose(); }
    Sinon ça ca marche bien et c'est pas trop sale
    merci ca marche

    j ai une autre petit probleme..autre part dans le code je fais

    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
    public class MenuListener implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    			String cmd = e.getActionCommand();
     
    			if (cmd == "Nouvelle partie") {
    		       System.out.println("Nouvelle partie...");
     
    		       NewGame aNewGame = new NewGame();
    		       aNewGame.setModal(true);
    		       aNewGame.setVisible(true);
    			}
    			else if (cmd == "Quitter") {
    				System.exit(0);
    		    }
     
    			getMainFrame().getGameMap().requestFocus();
    			getMainFrame().getGameMap().repaint();
    		}
    	}
    mais la fenetre aNewGame ne se met pas en modal ... NewGame c la meme classe qu avant.

  18. #18
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Ben ca s'ouvre dans une nouvelle fenetre non ?

  19. #19
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Comment ca il faut une fenetre parent ?

  20. #20
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Pas obligatoirement, mais qu'appele tu modale toi ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VB.net] appeler un objet "parent"
    Par niouze dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 12/02/2007, 11h06
  2. Réponses: 2
    Dernier message: 01/11/2006, 03h18
  3. passer un objet dérivé a un objet parent
    Par airseb dans le forum C++
    Réponses: 9
    Dernier message: 30/10/2006, 19h11
  4. Réponses: 14
    Dernier message: 24/04/2006, 08h36

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