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

Composants Java Discussion :

[JButton] boutton pour ajouter un composant


Sujet :

Composants Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut [JButton] boutton pour ajouter un composant
    Bonjour
    sur un JPanel j'ai 3 composants
    un JPanel1 en haut
    un bouton en bas
    et des qu'on clique sur le bouton un JPanel2 doit apparaitre en bas

    qu'est ce qu'il vaut mieux , mettre JPanel2 en visible/invisible ou ajouter/retirer JPanel2 chaque fois
    et sinon comment est-il possible de faire pour que ça apparaisse comme ça
    http://img360.imageshack.us/img360/8482/panelsrj1.jpg

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut
    avez-vous essayer visible/invisible

    ça doit etre marché

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut
    sympa mais ta reponse n'aide pas beaucoup

  4. #4
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut
    en fait j'avais le meme probleme sauf que moi j'ai des boutons à gauche de la fanetre et un grand panneau dans l'espace restant ,et lorsque je cilque il faut afficher des controles correspondant ,

    donc la première methode que j'ai utilisé est de fair un repaint() au panneau
    mais ça provoque d'autre problème vous pouvez les voir en testant ça.

    donc la solution que j'ai utilisé et de faire à chaque bouton (item) un panel
    ce panel je l'ajoute au panneau principale et je fait panel.setVisible(true);

    et lorsque je change le bouton je fait pour panel setVisible(false)
    et comme ça pour les autres en restant dans une seule fenetre bien sur.

  5. #5
    Membre éclairé Avatar de DjGonk
    Profil pro
    Inscrit en
    Février 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 88
    Par défaut
    Tu peux aussi t'inspirer du JXtaskPane du projet SwingX de chez SwingLabs qui lui fait ce que tu recherches.

    Après il faudra peut être jouer sur le repaint de la JFrame pour augmenter ou diminuer sa taille suivant si le JPanel est afficher ou non.

    http://swinglabs.org/projects.jsp

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (e.getSource()==boutton){
    			if (jPanel2.isShowing()){
    			jPanel.setSize(jPanel.getWidth(), jPanel.getHeight()-300);
    				jPanel.repaint();
    				jPanel2.setVisible(false);
    			}
    			else {
    	        jPanel.setSize(jPanel.getWidth(), jPanel.getHeight()+300);
    				jPanel.repaint();
    				jPanel2.setVisible(true);
    			}
    		}
    j'ai fait ça pour que jPanel s'agrandisse quand jPanel2 apparait,
    la hauteur de jPanel2 est justement de 300 px
    mais je comprend pas, en pratique jPanel ne change pas de taille

  7. #7
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Mieu que le repaint(), il faut faire un revalidate() une fois que le panel est rendu visible, pas avant.
    Je me suis permis de simplifier le code en quelque chose de plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (e.getSource()==boutton){
        jPanel2.setVisible(!jPanel2.isShowing());
        jPanel.revalidate();
    }

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut
    Citation Envoyé par CheryBen Voir le message
    Mieu que le repaint(), il faut faire un revalidate() une fois que le panel est rendu visible, pas avant.
    Je me suis permis de simplifier le code en quelque chose de plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (e.getSource()==boutton){
        jPanel2.setVisible(!jPanel2.isShowing());
        jPanel.revalidate();
    }
    merci
    mais comment il faudrait faire pour que le panel 2 apparaisse comme ça
    http://img360.imageshack.us/img360/8482/panelsrj1.jpg
    j'ai essayé en agrandissant/reduisant la taille
    meme avec un revalidate() ça marche pas

  9. #9
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Comment apparaît-il actuellement?
    Ce serait plutôt un problème de layout.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut
    Citation Envoyé par CheryBen Voir le message
    Comment apparaît-il actuellement?
    Ce serait plutôt un problème de layout.
    actuellement comme ça http://img151.imageshack.us/img151/7...fopanelko9.jpg

    pour les layouts j'ai utilisé gridbaglayout et placé les composant les uns en dessous des autres
    mais des que le panel du bas est visible il repousse les autres vers le haut
    je sais pas comment faire

  11. #11
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Je n'ai pas testé mais je pense que cela devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (e.getSource()==boutton){
        jPanel2.setVisible(!jPanel2.isShowing());
        if(jPanel2.isShowing()) {
            jPanel.setSize(jPanel.getWidth(), jPanel.getHeight() + jPanel2.getHeight());
        }
        else {
            jPanel.setSize(jPanel.getWidth(), jPanel.getHeight() - jPanel2.getHeight());
        }
        jPanel.revalidate();
    }

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut
    bon en fait jPanel est lui meme dans un jTabbedPane
    http://img175.imageshack.us/img175/3...fopaneltu7.jpg

    mais ça change rien s'y on change la taille du tabbedpane aussi

    j'ai essayé ton code adapté mais ça marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (e.getSource()==boutton){
        jPanel2.setVisible(!jPanel2.isShowing());
        if(jPanel2.isShowing()) {
    jtabbedPane.setSize(jtabbedPane.getWidth(), jtabbedPane.getHeight()-jPanel2.getHeight());
            jPanel.setSize(jPanel.getWidth(), jPanel.getHeight() - jPanel2.getHeight());
        }
        else {
    jtabbedPane.setSize(jtabbedPane.getWidth(), jtabbedPane.getHeight()+jPanel2.getHeight());
            jPanel.setSize(jPanel.getWidth(), jPanel.getHeight() + jPanel2.getHeight());
        }
    jtabbedPane.revalidate();
        jPanel.revalidate();
    }
    etonnant que les panels ne change pas de taille quand on leur demandent?

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 252
    Par défaut
    svp quelqu'un a t'il une solution?

    il faudrait que j'ai un panel et un petit boutton en bas qnd je clicke dessus un panel apparait en bas de ce boutton.
    cad le panel principal s'agrandit, en tout cas il faut que le boutton soit toujours au mème endroit

    merci pour tout si quelqu'un peut m'aider

  14. #14
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Voici un exemple simple avec un BorderLayout. En espérant que cela corresponde a ce que tu cherche et que cela puisse t'aider...

    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
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Test extends JFrame {
     
    	private JPanel topPanel = new JPanel();
    	private JButton btn = new JButton("toogle");
    	private JPanel bottomPanel = new JPanel();
    	private boolean visible = false;
     
    	public static void main(String[] args) {
    		new Test();
    	}
     
    	public Test() {
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		createLayout();
    		pack();
    		setLocationRelativeTo(null);
    		setVisible(true);
    	}
     
    	private void createLayout() {
    		btn.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				visible = !visible;
    				bottomPanel.setVisible(visible);
    				pack();
    			}
    		});
    		topPanel.add(new JLabel("label 1 ..."));
    		bottomPanel.add(new JLabel("label 2 ..."));
    		bottomPanel.setVisible(visible);
    		add(topPanel, BorderLayout.NORTH);
    		add(btn, BorderLayout.CENTER);
    		add(bottomPanel, BorderLayout.SOUTH);
    	}
    }

Discussions similaires

  1. Composant pour ajouter des éléments en lignes
    Par MiniCesc dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 14/01/2011, 11h26
  2. Pb pour ajouter composant dans la boite à outils
    Par batteuryo dans le forum Windows Forms
    Réponses: 8
    Dernier message: 20/06/2008, 20h14
  3. Composant COM pour ajouter une GUI à un script
    Par omen999 dans le forum Vos Contributions VBScript
    Réponses: 3
    Dernier message: 14/02/2008, 00h01

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