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 :

appeler des composants à partir d'une autre frame


Sujet :

AWT/Swing Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut appeler des composants à partir d'une autre frame
    Bonjour a tous,

    Je vous expose mon problème :

    J'ai 2 Jframe (une frame_main et une frame_option)
    J'ai un bouton sur ma frame_main qui affiche ma frame_option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        private void bt_optionsActionPerformed(java.awt.event.ActionEvent evt) {                                           
     
            //on rend la frame_main inactive
            this.setEnabled(false);
            new frame_options(this);
     
        }
    Dans ma frame_option je change plusieurs paramètres de ma frame_main et sont stoqués dans un fichier .properties.

    Mon problème est très simple à comprendre, j'aimerais pouvoir appeler l'initialisation de ma frame_main lorsque je ferme ma frame_option. (j'ai regroupé l'initialisation en plusieurs fonctions (initlanguage, initFrame...) que j'apelle dans mon public frame_main() {}

    Or ceci est possible que si je met tous mes composants de ma frame_main en "public static" car sinon mes composants ne peuvent être appelés.

    J'aimerais donc savoir si j'ais une alternative à cela !
    Dites moi s'il vous manque du code pour répondre !

    Merci beaucoup à ceux qui prendrons le temps de me lire et de me répondre

  2. #2
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Apparament résolu en mettant "public"+static" dans les propriétés de ma frame_main avec netbeans

    Edit en fait non car j'ai une erreur avec "this" ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SwingUtilities.updateComponentTreeUI(this);
    ou ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.getExtendedState()==this.MAXIMIZED_BOTH
    J'ai l'erreur non-static variable cannot be referenced in a static context

    Comment mettre this en static ?
    Ou n'y a t il pas une solution du côté des superclasse ? (j'ai toujours pas compris à quoi sert super d'ailleurs !)

  3. #3
    Membre actif Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Points : 205
    Points
    205
    Par défaut
    Alors, ça m'a l'air un peu confus, mais j'vais quand même essayer de t'aider un peu.

    Tu as un MainFrame qui extends JFrame et qui dans le constructeur appelle une série de méthode d'initialisation : initLangage etc...

    Tu as un optionFrame qui extends aussi JFrame et qui prends un MainFrame en paramètre dans le constructeur.

    A la fermeture du OptionFrame, tu veux lancer l'initialisation de ta MainFrame.

    J'ai bon?

    Voilà un bout de code qui va peut-être pouvoir t'aider un peu.
    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
    package MesFrames;
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
     
    public class MainFrame extends JFrame {
     
    	public MainFrame() {
    		initLangage();
    		initFrame();
    	}
     
    	public void initLangage() {
    		System.err.println("J'initialise mes langues");
    	}
     
    	public void initFrame() {
    		System.err.println("J'initialise ma frame");
    		setSize(100, 100);
    		setTitle("Main");
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		JButton button = new JButton("Option");
    		button.addActionListener(new ActionListener() {
     
    			public void actionPerformed(ActionEvent arg0) {
    				// On affiche la OPTION Frame
    				new OptionFrame(MainFrame.this);
    				// On cache la MAIN FRAME
    				MainFrame.this.setVisible(false);
    			}
    		});
     
    		getContentPane().add(button);
    		setVisible(true);
    	}
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		MainFrame mainFrame = new MainFrame();
    	}
     
    }
     
    class OptionFrame extends JFrame {
     
    	private final MainFrame mainFrame;
     
    	public OptionFrame(MainFrame _mainFrame) {
    		super();
    		setSize(100, 100);
    		setTitle("Option");
    		setVisible(true);
    		mainFrame = _mainFrame;
    		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    	}
     
    	public void dispose() {
    		super.dispose();
    		closeOperation();
    	}
     
    	private void closeOperation() {
    		mainFrame.initLangage();
    		mainFrame.initFrame();
    	}
    }

  4. #4
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    Merci ça fonctionne, mais pourrais tu me dire à quoi sert le super() ? j'ai deja lu des trucs dessus, mais j'ais jamais rien compris

  5. #5
    Membre actif Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Points : 205
    Points
    205
    Par défaut
    Le mot clé super permet de faire référence à la super classe (ou la classe mère).

    Un exemple vaut mieux que de longs discours.

    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
    package toto;
     
    public class Mere {
     
    	protected final String information;
     
    	public Mere(String _information) {
    		information = _information;
    	}
     
    	public void ecrire() {
    		System.err.println(information + " Mere");
    	}
     
    	public static void main(String[] args) {
    		new Mere("La mère").ecrire();
    		new Fille("La fille").ecrire();
    	}
     
    }
     
    class Fille extends Mere {
     
    	public Fille(String information) {
    		// Dans le constructeur, le super permet
    		// d'invoquer le constructeur de la classe mère.
    		// J'initialise donc la valeur de l'attribut "information" 
    		super(information);
    	}
     
    	public void ecrire() {
    		// J'utilise la méthode de la classe mère en utilisant le mot super
    		super.ecrire();
    		System.err.println(information + " Fille");
    	}
     
    }

  6. #6
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Points : 72
    Points
    72
    Par défaut
    ok c'est parfait merci !

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

Discussions similaires

  1. [iframe] Afficher une balise div à partir d'une autre frame
    Par bouchette63 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/10/2006, 11h01
  2. fermer une frame a partir d'une autre frame
    Par zekmek dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/10/2006, 13h31
  3. Réponses: 3
    Dernier message: 19/06/2006, 10h26
  4. Lister des element HTML à partir d'une autre frame
    Par psychomatt dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/03/2006, 18h03
  5. Réponses: 6
    Dernier message: 30/09/2005, 00h53

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