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 :

[Applet] Modifier dynamiquement la mise en page


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Avatar de Amnesiak
    Profil pro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 151
    Points
    151
    Par défaut [Applet] Modifier dynamiquement la mise en page
    Bonjour,

    Je dispose d'une applet minimale composée de 2 boutons. Le gestionnaire de mise en page est un GridLayout disposé en 3 lignes: la 3e ligne est donc pour l'instant inutilisée. J'aimerais cependant qu'un clic sur un des boutons y insère un panel que j'aurais préalablement initialisé. J'ai donc crée la classe suivante :

    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
     
    import java.awt.*;
    import java.awt.event.*;
     
    public class AppletExemple extends java.applet.Applet implements ActionListener {
     
        Panel p1, p2;
     
        public void init() {
     
            setLayout(new GridLayout(3,1));
            Button b1 = new Button("Afficher p1");
            b1.addActionListener(this);
            Button b2 = new Button("Afficher p2");
            b2.addActionListener(this);
            add(b1);
            add(b2);
     
            // Construit les panels sans les insérer dans le layout
            p1 = new Panel();
            p1.setBackground(Color.blue);
            p2 = new Panel();
            p2.setBackground(Color.red);
        }
     
        public void actionPerformed(ActionEvent e) {
     
            if (e.getActionCommand() == "Afficher p1") {
                add(p1);
            } else if (e.getActionCommand() == "Afficher p2") {
                add(p2);
            }
        }
    }
    Le problème est qu'aucun changement ne s'affiche à l'écran.
    J'ai l'impression qu'il doit sans doute manquer une méthode de rafraichissement de l'affichage, mais je ne sais pas laquelle...

    Quelqu'un peut-il me suggérer une solution ?

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 40
    Points
    40
    Par défaut Re: [Applet] Modifier dynamiquement la mise en page
    Salut, quand tu fais ça :

    Citation Envoyé par Amnesiak
    public void actionPerformed(ActionEvent e) {

    if (e.getActionCommand() == "Afficher p1") {
    add(p1);
    } else if (e.getActionCommand() == "Afficher p2") {
    add(p2);
    }
    }
    [/code]
    rajoute p2.setVisible(false) quand tu add(p1) , rajoute p1.setVisible(false) quand tu add(p2).
    Si tu tapes ta tête contre une cruche et que ça sonne creux, ce n'est pas forcément la cruche qui est vide !!
    Mes topics sont tabous, vous en viendrez tous à bout.

  3. #3
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut Re: [Applet] Modifier dynamiquement la mise en page
    Citation Envoyé par Amnesiak
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        public void actionPerformed(ActionEvent e) {
     
            if (e.getActionCommand() == "Afficher p1") {
                add(p1);
            } else if (e.getActionCommand() == "Afficher p2") {
                add(p2);
            }
        }
    }
    essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            if ("Afficher p1".equals(e.getActionCommand())) {
                add(p1);
            } else if ("Afficher p2".equals(e.getActionCommand())) {
                add(p2);
            }

  4. #4
    Membre habitué
    Avatar de Amnesiak
    Profil pro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 151
    Points
    151
    Par défaut
    Merci pour vos réponses, elles permettent d'obtenir une programmation plus propre, mais la cause du problème semble être ailleurs...

    En effet, c'est bien un problème d'affichage, car après avoir cliqué sur un bouton, au premier abord rien ne se produit, mais si je réduis la fenêtre de l'applet puis que je la réaffiche (ce qui provoque un raffraichissement de l'affichage) le panel apparait correctement.

    J'aimerais donc pouvoir raffraichir moi-même l'affichage après avoir inséré le panel adéquat dans mon layout.

  5. #5
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    il faut probablement faire un repaint() sur le panel

  6. #6
    Membre habitué
    Avatar de Amnesiak
    Profil pro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 151
    Points
    151
    Par défaut
    C'est certainement quelque chose de ce style, car le repaint() ne semble pas changer grand chose à la situation

  7. #7
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    essaie alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    this.invalidate();
    this.validate();
    this.repaint();
    sur l'applet.

  8. #8
    Membre habitué
    Avatar de Amnesiak
    Profil pro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 151
    Points
    151
    Par défaut
    Ceci procure bien l'effet souhaité, merci pour vos conseils !

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

Discussions similaires

  1. [XSL-FO]Tableau dynamique et mise en page
    Par Little_flower dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 24/05/2007, 16h02
  2. modifier dynamiquement une icone de page
    Par mch_27 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/10/2006, 11h08
  3. [JTextArea] Modifier la mise en page d'un mot unique
    Par minus dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 03/04/2006, 15h43
  4. [CR][.Net] Mise en page dynamique Après éxecution
    Par Audrey Stelle dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/10/2005, 14h49
  5. Réponses: 8
    Dernier message: 09/09/2005, 09h51

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