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 :

Section retractable


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    FTH
    FTH est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Par défaut Section retractable
    Salut,
    J'aimerai faire un section capable de se retracter lorqu'on clique sur un bouton.
    Pour etre plus parlant, j'aimerais obtenir le meme effet que le champs "details" dans la barre de gauche sous windows.

    j'ai essayé le JSplitPane mais deux problemes sont venus :
    1- j'aimerais limiter le masquage dun panel que dans un sens et pas les deux.
    2 - composants reste à la meme taille que si j'avais les deux panels alors que justement j'aimerais gagner de la place.

    une image pour vous montrer l'effet ce que je recherche :

    Merci pour votre aide !


  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut,

    Tu peux faire ceci en empilant des JPanel verticalement, avec un BoxLayout en Y axis. Tu places alternativement le titre dans un panel (avec un bouton pour cacher/afficher), puis les options dans le panel suivant, et ainsi de suite.

    Sur le bouton, tu gères un event qui va cacher/afficher le panel de dessous.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    FTH
    FTH est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Par défaut
    Merci, j'y avais aussi pense.
    Mais en faisant setVisible(false) du panel, la place qui etait reserve la Jlist avec les options est conservée et donc pas de gain de place !

    Merci de ta reponse

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Bizarre, sur l'essai que j'ai fait, les autres panels remontent bien comme il faut...
    Tu as bien placé tous les panels dans un autre panel avec un BoxLayout en Y?

    [edit] Histoire de tester chez toi... désolé pour la longueur de code...

    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
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    public class PliDepli extends JFrame {
     
    	public static void main(String[] args) {
    		PliDepli test=new PliDepli();
    		test.setVisible(true);
    	}	
     
    	public PliDepli() {
    		super("test Pli/Depli");
    		this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    		this.setPreferredSize(new Dimension(200, 400));
     
    		getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
     
    		String[] options={"option 1","option 2","option 3"};
     
    		Pano pano1=new Pano("Titre 1",options);
    		Pano pano2=new Pano("Titre 2",options);
    		Pano pano3=new Pano("Titre 3",options);
     
    		getContentPane().add(pano1);
    		getContentPane().add(pano2);
    		getContentPane().add(pano3);
     
    		JPanel tampon=new JPanel();
    		tampon.setPreferredSize(new Dimension(20, 2000));
     
    		getContentPane().add(tampon);
     
    		pack();
    	}
     
    	private class Pano extends JPanel {
     
    		JPanel jPanelTout;
    		JPanel jPanelTitre;
    		JPanel jPanelOptions;
     
    		public Pano(String titre,String[] options) {
    			super();
     
    			jPanelTout=new JPanel();
    			jPanelTitre=new JPanel();
    			jPanelOptions=new JPanel();
     
    			jPanelTout.setLayout(new BoxLayout(jPanelTout, BoxLayout.Y_AXIS));
    			jPanelTitre.setLayout(new BorderLayout());
    			jPanelOptions.setLayout(new BoxLayout(jPanelOptions, BoxLayout.Y_AXIS));
     
    			// Panneau Titre
     
    			jPanelTitre.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
    			jPanelTitre.setMaximumSize(new java.awt.Dimension(2000, 50));
     
    			JLabel jLabelTitre=new JLabel();
    			jLabelTitre.setText(titre);
    			jPanelTitre.add(jLabelTitre, BorderLayout.CENTER);
     
    			JButton bouton=new JButton();
    			bouton.setText("Pli/Depli");
    			bouton.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent evt) {
    					boutonActionPerformed(evt);
    				}
    			});
     
    			jPanelTitre.add(bouton,BorderLayout.EAST);			
    			jPanelTout.add(jPanelTitre);
     
    			// Panneau Options
     
    			jPanelOptions.setLayout(new BorderLayout());			
    			jPanelOptions.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)), null));
     
    			JPanel optionPanel=new JPanel();
    			optionPanel.setLayout(new BoxLayout(optionPanel, BoxLayout.Y_AXIS));			
    			optionPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 20, 1, 1));
     
    			JLabel[] optionsLabel=new JLabel[options.length];
    			for (int i=0;i<options.length;i++) {
    				optionsLabel[i]=new JLabel();
    				optionsLabel[i].setText("Option "+titre+"_"+(i+1));
    				optionPanel.add(optionsLabel[i]);
    			}
     
    			jPanelOptions.add(optionPanel, BorderLayout.CENTER);			
    			jPanelTout.add(jPanelOptions);
     
    			this.add(jPanelTout);
    		}
     
    		private void boutonActionPerformed(ActionEvent evt) {                                         
    			this.jPanelOptions.setVisible(!this.jPanelOptions.isVisible());
    		}                                        		
    	}
    }
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    FTH
    FTH est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Par défaut
    C'est bon merci comme tu t'en doutais j'avais oublie de mettre un panel avec un boxLayout en Y_AXIS.

    En plus le Jpanel tampon, j' y aurais pas pense

    Encore Merci !!!!

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Sinon il existe le projet SwingX qui propose un ensemble de composant évolué, dont un qui ressemble beaucoups à ce que tu veux :


    Plus d'info ici : http://swinglabs.org/index.jsp

    a++

  7. #7
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    C'est le JXCollapsiblePane pour le comportement general et le JXTaskPane pour faire exactement comme dans Windows XP.

Discussions similaires

  1. [Débat] Votre avis sur la section "Dev Web"
    Par Marc Lussac dans le forum Evolutions du club
    Réponses: 31
    Dernier message: 03/03/2004, 20h55
  2. [CR] Grouper des sections de détail?
    Par rodrigue50 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/06/2003, 14h32
  3. [Conception] Section administration d'un site, tables
    Par bolo dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 02/04/2003, 14h17
  4. [éditeur de rapport]section
    Par Stessy dans le forum PowerAMC
    Réponses: 11
    Dernier message: 28/03/2003, 12h36

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