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 :

Changer la couleur d'un JPanel à partir d'un bouton d'une autre classe


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre régulier
    Inscrit en
    février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 90
    Points : 83
    Points
    83
    Par défaut Changer la couleur d'un JPanel à partir d'un bouton d'une autre classe
    Bonjour,
    j'ai une classe nommé qui "slot" (qui est un jPanel) qui permet d'avoir une instance slot. j'ai un MouseClicked sur une autre classe (qui contient un bouton). je voudrais que lorsque je clique sur le bouton de l'autre classe, la couleur de mon jLabel change. que dois je faire ?!!

    voici ma classe slot :
    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
     
    /*
     * Slot.java
     *
     
     
    import java.awt.Color;
    import java.awt.Dimension;
     
    public class Slot extends javax.swing.JPanel {
        public Boolean TestB = false;
        /** Creates new form Slot */
        public Slot() {
            initComponents();
        }
     
        public Slot(String SlotNum, String MASGName) {
            initComponents();
            this.SlotNum = SlotNum;
            this.MASGName = MASGName;
        }
            public Slot(String SlotNum, String MASGName, String PTN_type) {
            initComponents();
            this.SlotNum = SlotNum;
            this.MASGName = MASGName;
            this.PTN_type = PTN_type;
        }
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
     
            internalText = new javax.swing.JLabel();
     
            setBackground(new java.awt.Color(255, 255, 255));
            setMaximumSize(new java.awt.Dimension(19, 217));
            setMinimumSize(new java.awt.Dimension(19, 217));
            setPreferredSize(new java.awt.Dimension(19, 217));
            addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    formMouseClicked(evt);
                }
            });
     
            internalText.setText("<html>S<br> L<br>O<br>T<br> <br>N</html>");
            internalText.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
     
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
            this.setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(internalText, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(internalText, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE)
                    .addContainerGap())
            );
        }// </editor-fold>                        
     
        private void formMouseClicked(java.awt.event.MouseEvent evt) {                                  
     
            TestDialog tf = new TestDialog(null,true);
             BoardAddGui bf = new BoardAddGui(SlotNum, MASGName, PTN_type);
     
             tf.jTabbedPane1.add(bf);
             bf.setBackground(Color.white);
             tf.jTabbedPane1.setTitleAt(0, "Board : Add");
     
             tf.setSize(new Dimension(700,500));
             tf.setVisible(true);
        }                                 
     
        public String getInternalText() {
            return internalText.getText();
        }
     
        public void setInternalText(String internalText) {
            this.internalText.setText(internalText);
        }
     
        public String getMASGName() {
            return MASGName;
        }
     
        public void setMASGName(String MASGName) {
            this.MASGName = MASGName;
        }
     
        public String getSlotNum() {
            return SlotNum;
        }
     
        public void setSlotNum(String SlotNum) {
            this.SlotNum = SlotNum;
        }
     
     
     
        private String SlotNum;
        private String MASGName;
        private String PTN_type;
        // Variables declaration - do not modify                     
        public javax.swing.JLabel internalText;
        // End of variables declaration                   
     
    }

  2. #2
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    et bien passe ton panel en paramètre du constructeur de ton autre classe.
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  3. #3
    Membre régulier
    Inscrit en
    février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par michon Voir le message
    et bien passe ton panel en paramètre du constructeur de ton autre classe.
    ca marche très bien, merci.
    Cependant, comme ce panel est lui aussi affiché à l'aide d'un autre bouton, alors, quand je clique sur le bouton de ma classe, ca me change la couleur du panel! mais quand je ferme le panel et je le rouvre, le panel redevient non coloré!! en quoi consiste le problème ?! Merci.

  4. #4
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Je dirais ici qu'en "fermant" ton JPanel, l'objet JPanel en lui même est détruit, c'est un très probalbment un nouveau JPanel qui est affiché lorsque tu le "rouvre".

    je verrais plusieurs solutions possibles :

    1 - Si tu n'as pas besoin de créer un nouveau JPanel à chaque fois, tu peux faire en sorte qu'un appui sur la croix de fermeture cache simplement ton pannel au lieu de le détruire. Ensuite, tun'auras qu'a faire un "setVisible(true)" quand tu souhaite le réafficher. Pour faire cela, dans le constructeur du JPanel il faut écrire un truc du genre "setDefultCloseOperation(HIDE_ON_CLOSE)" mais je suis pu sur à 100% de la syntaxe.

    2 - Si tu as besoin de créer un nouveau JPanel, arrange toi pour mémoriser la couleur du précedent dans une variable, avant qu'il soit détruit. Ensuite, passe la couleur en paramètre du constructeur du JPanel quand tu le recréra. Pour mémoriser la couleur, pense à le faire ailleurs que dans ta classe JPanel elle même car ton objet sera détruit, et donc le contenu des variables avec...
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : mai 2011
    Messages : 94
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par michon Voir le message
    Pour faire cela, dans le constructeur du JPanel il faut écrire un truc du genre "setDefultCloseOperation(HIDE_ON_CLOSE)" mais je suis pu sur à 100% de la syntaxe.
    Je suis d'accord avec le proposition que tu fais et pour le setDefaultCloseOperation, c'est EXIT_ON_CLOSE. Ceci dit si tu utilise un utilitaire comme eclipse il t'aurai signaler l'erreur .

    PS : Je viens de lire ton code et pourquoi tu n'utilise les import ca te permettrai d'allèger un peu ton code surtout au niveau des méthodes et des paramètres qu'elles utilisent non ?

  6. #6
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    en fait "EXIT_ON_CLOSE" ferme l'application, ce qui n'est pas ce que l'on souhaite... si il veut juste cacher une fenêtre pour la faire réapparaître, je viens de vérifier dans la javadoc, et c'est bien "HIDE_ON_CLOSE".

    Après à voir ce qui est l mieux, de cacher et faire réapparaître, ou mémoriser la couleur pour la recréer... Cela dépend de tes besoins.
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  7. #7
    Membre régulier
    Inscrit en
    février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : février 2011
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par michon Voir le message
    en fait "EXIT_ON_CLOSE" ferme l'application, ce qui n'est pas ce que l'on souhaite... si il veut juste cacher une fenêtre pour la faire réapparaître, je viens de vérifier dans la javadoc, et c'est bien "HIDE_ON_CLOSE".

    Après à voir ce qui est l mieux, de cacher et faire réapparaître, ou mémoriser la couleur pour la recréer... Cela dépend de tes besoins.
    Parfait, ca marche très bien et le "HIDE_ON_CLOSE" est la meilleure solution. Merci énormément.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/04/2011, 15h03
  2. Réponses: 0
    Dernier message: 21/04/2011, 13h23
  3. Ouverture d'un JPanel à partir d'un bouton présent dans un autre JPanel
    Par Requiem11 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/01/2010, 19h09
  4. Changer le texte d'un label à partir d'une autre classe
    Par joannak20 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 15/01/2009, 11h37
  5. Changer la couleur d'un JPanel, ca marche po :'(
    Par heider dans le forum JBuilder
    Réponses: 2
    Dernier message: 17/02/2006, 15h50

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