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 :

Activé des boutons, textField, d'un JPanel depuis un autre JPanel


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut Activé des boutons, textField, d'un JPanel depuis un autre JPanel
    Bonjour,

    je souhaite activer toute une séries de boutons, de textField, etc.. contenu dans un JPanel ( Attributes.java ), avec une checkBox contenu dans un autre JPanel ( MainInfos.java ), tout deux affiché dans une JFrame du fichier Application.java.

    J'arrive à activer cette série d'objets directement avec une checkBox du JPanel des objets, mais avec la checkBox de l'autre JPanel ça ne fonctionne pas :/.

    voici l'interface :


    La checkBox ( contenu dans MainInfos.java ) à coté de Set Enchant doit activer les éléments pointés par les flèches...

    Methode ( contenu dans Attributes.java ) pour activer les élément.
    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
    	public void setEnchantPanel(boolean op){
     
    	    labelEnchant1.setEnabled(op);
    	    labelEnchant2.setEnabled(op);
     
    	    comboEnchantType1.setEnabled(op);
    	    comboEnchantType2.setEnabled(op);
     
    	    buttonEnchant1.setEnabled(op);
    	    buttonEnchant2.setEnabled(op);
     
    	    textEnchant1.setEnabled(op);
    	    textEnchant2.setEnabled(op);
     
    	    revalidate();
    	    repaint();
    	}

    utilisation de la méthode setEnchantPane() avec la checkBox de Attributes.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	private Attributes g = new Attributes();
     
    	private void checkEnchantStateChanged(ItemEvent e) {
    		if(checkEnchant.isSelected()){
    		    g.setEnchantPanel(true);
     
    		}
    		else if(!checkEnchant.isSelected()) {
    		    g.setEnchantPanel(false);
    		}
    	}
    Je ne vois pas trop d'où vient le problème :/ peut-être dù a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Attributes g = new Attributes();
    ?

    Si quelqu'un a une idée.
    Merci d'avance.

  2. #2
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    Au moins récupères-tu vraiment l'évènement 'StateChanged' de ta checkBox ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Oui, puisque cette chekBox fonctionne pour activer et desactiver le JLabel "Enchant Lvl: et les deux JtextField à coté (voir image).

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Apparement tout s'active bien j'ai vérifié avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Enable: "+labelEnchant1.isEnabled());
    dans la méthode public void setEnchantPanel(boolean op){}

    L'effet de cocher ou de décocher la checkBox retourne bien un true ou false, mais l'intreface ne se refresh pas, le revalidate(); et le repaint(); dans la méthode setEnchantPanel ne fonctionnent pas? Est-ce que le problème serai dû à ce que les deux JPanel (contenu dans MainInfos.java et Types.java) soient affiché par la JFrame de Application.java et que cette dernière ne se refresh pas ?

  5. #5
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    ah, c'est bien possible qu'il faille que tu remontes jusqu'à ta Frame pour faire un :


  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Finalement j'ai essayé un repaint de la frame mais rien n'y fait...

    Pourtant la méthode setEnchantPanel contenu dans Attributes.java fonctionne bien si je l'utilise directement avec une checkBox dans ce fichier... je vois vraiment pas

  7. #7
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    Le panel Attributs que tu créés en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private Attributes g = new Attributes();
    est bien celui qui est affiché ? Tu n'en créés pas un autre ailleurs ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Comment ça c'est bien celui qui est affiché ?

    j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Attributes g = new Attributes();
    pour pouvoir utiliser la methode setEnchantPanel() contenu dans Attribute. Ce n'est pas correct? :s

    Sinon à apart le private Attributes attributes1 = new Attributes(); contenu dans ma JFrame (Application.java), et celui-ci non il n'y en a pas d'autres.

    Edit: ... je viens de comprendre >_> effectivement c'est bien le private Attributes g = new Attributes(); qui est en cause, il n'y a pas une solution pour utiliser la methode setEnchantPanel() sans recréer le panel attributes?

    merci

  9. #9
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    Deux méthodes :

    Soit tu déclare une méthode de classe ( static ) et donc pas besoin d'avoir d'objet
    Soit tu passe ton objet Attributes en paramètres à ton deuxième panel et tu le stocke en variable d'instance

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Est-ce que tu as un petit exemple de code ?stp :/ Merci bien

  11. #11
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    méthode de classe ( pas besoin d'instancier un objet )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class TacheSynchro {
     
    	static Vector<String> listeTableSynchro = new Vector<String>() ;
     
    	static public void addListeTableSynchro(String str){ listeTableSynchro.add( str) ; }
     
    }
    tu l'appelles comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vector<String> vTables = TacheSynchro.getListeTableSynchro() ;
    Chez toi, ça ferait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Attributes.taMethode(..);

  12. #12
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    Et sinon tu peux aussi faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //dans ta classe MainInfos
     
    JPanel AttributesPane=null ;
     
    //constructeur
    public MainInfos( JPanel pane )
    {
     setAttributesPane( pane );
    }
    tu construis comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new MainInfos( new Attributes() );
    et quand tu reçois l'evt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getAttributesPane().setEnchantPanel(..) ;

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Ah ben merci beaucoup ça fonctionne avec la méthode de classe Par contre j'ai du passer mes variables de mes buttons, textfield , etc.. en static, cela ne va pas poser de problèmes plus tard pour l'utilisation des valeurs de ces derniers? ( J'ai testé très rapidement avec un bouton si les valeurs de mes combos et de mes textField sont récupérable et pas de problème aux premiers essais )

    Par contre pour la deuxième solution je n'ai pas très bien compris ni réussi à l'appliquer, et pourtant ce n'est pas faute d'avoir essayé de faire les deux solutions.

    Si ça ne te dérange pas de me donner plus d'infos sur la deuxième méthode ça m'intéresse

    En tout cas merci, j'étais sur ce problème depuis quelques heures...

  14. #14
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    en gros la deuxième solution consiste à donner à MainInfos, l'adresse de l'objet Attributes;
    Pour ce faire ou utilise un constructeur de MainInfox qui prend en paramètre ton objet Attributes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //dans ta classe MainInfos
     
    JPanel AttributesPane=null ;
     
    //constructeur
    public MainInfos( JPanel pane )
    {
     setAttributesPane( pane );
    }

    Puis MainInfo stocke cette valeur dans une variable afin de s'enreservir au moment opportun, par exemple quand tu coches ta checkbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getAttributesPane().setEnchantPanel(..) ;

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

Discussions similaires

  1. Activation des boutons des scrollbars
    Par JP2010 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/11/2010, 17h49
  2. Réponses: 29
    Dernier message: 21/10/2008, 17h36
  3. Réponses: 17
    Dernier message: 30/01/2008, 15h53
  4. activés des cases a cocher en fonction d'une autre
    Par doogybreton dans le forum IHM
    Réponses: 27
    Dernier message: 22/01/2008, 17h29

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