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

Agents de placement/Fenêtres Java Discussion :

[BorderLayout] Changer le composant


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre régulier Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut [BorderLayout] Changer le composant
    Bonjour,

    J'ai un BorderLayout avec au sud un bouton. Quand je clique sur ce bouton, j'aimerais changer le composant au centre, soit:

    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
     
    frame = new JFrame();
    pane = new JTabbedPane();
    panel = new JPanel();
    panel.add(new JLabel("Ceci est un panel"));
     
    // ajoute les onglets
    createTabs();
     
    frame.getContentPane().setLayout(new BorderLayout());
    frame.getContentPane().add(pane);
     
    JButton button =  new JButton("change");
    button.addActionListener(this);
    frame.getContentPane().add(button, BorderLayout.SOUTH);
    puis le code du listener
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     public void actionPerformed(ActionEvent event)
     {
        tabView = ! tabView;
        if(tabView == true)
        {
             frame.getContentPane().add(pane);
        }
        else
        {
             frame.getContentPane().add(panel);
        }
    }
    Mais bien evidemment ca ne marche pas et de toute facon, ca me parait assez "bourrin".
    Y'aurait il une solution pour faire ce genre de choses?

    calypso

  2. #2
    Membre régulier Avatar de jiraiya
    Inscrit en
    Mai 2002
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    et le tu le met où????

  3. #3
    Membre régulier Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    par default c'est center.. enfin je crois

    As a convenience, BorderLayout interprets the absence of a string specification the same as the constant CENTER:

    Panel p2 = new Panel();
    p2.setLayout(new BorderLayout());
    p2.add(new TextArea()); // Same as p.add(new TextArea(), BorderLayout.CENTER);

  4. #4
    Membre régulier Avatar de jiraiya
    Inscrit en
    Mai 2002
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    ok, mais bon, c'est toujours mieux de le mettre, sinon comment est tu sur qu'il ne fait rien?? il y a qqch dans tes panels, si c pas le cas en ajoutant juste un panel tu verras pas grand chose.

  5. #5
    Membre régulier Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    Oui Oui, il y a bien evidemment des composants!

    En fait, en ajoutant :

    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
     
     
     if(tabView == true)
          {
             frame.getContentPane().remove(panel);
             frame.getContentPane().add(pane, BorderLayout.CENTER);
             frame.repaint();
             frame.validate();
          }
          else
          {
             frame.getContentPane().remove(pane);
             frame.getContentPane().add(panel, BorderLayout.CENTER);
             frame.repaint();
             frame.validate();
          }
    ca fonctionne, mais ca ne parait pas tres optimise.

    En effet, enlever les composants pour en rajouter, appeler validate..
    Je me demande si il n'existerait pas un composant qui soit cree pour ce genre d'utilisation..

    calypso

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 74
    Points
    74
    Par défaut
    Tu peux mettre un panel muni d'un CardLayout au centre de ton borderLayout. En fait un cardLayout ajoute chaque composant les un au dessus des autres et tu peux lui demander d'afficher celui que tu veux..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    jpanelCentre = new JPanel (new CardLayout());
    jpanelCentre.add(UnPanel,"NomDeTonPanel");
    ((CardLayout)jpanelCentre.getLayout()).show(jpanelCentre,"NomDeTonPanelaAfficher");
    Moi j'utilise ca..Si quelqu'un a des remarques a faire,il est le bienvenue car la 3ème ligne me semble un peu barbare..

  7. #7
    Membre régulier Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    Merci, je ne connaissais pas et c'est exactement ce qu'il me fallait!

    calypso

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

Discussions similaires

  1. Changer de composant start
    Par spiale dans le forum Développement de jobs
    Réponses: 7
    Dernier message: 02/07/2014, 17h37
  2. Changer un composant à la volée.
    Par Invité dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 03/08/2006, 10h15
  3. Réponses: 2
    Dernier message: 09/08/2005, 08h51
  4. [BorderLayout] superposition des composants.
    Par vasilov dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 08/07/2005, 11h51
  5. [VB.NET] Composant utilisée pour changer donnée access
    Par moust dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/04/2005, 10h44

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