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 :

Espace entre élément dans JPanel


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 109
    Points : 81
    Points
    81
    Par défaut Espace entre élément dans JPanel
    Bonjour,

    J'ai crée un JPanel et j'ai mis quelque éléments dedans centré verticalement. Cependant, j'aimerais qu'il y ait des espaces entre chaque éléments, mais je ne sais pas quel propriété utilisé pour le faire...

    merci
    a+

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 178
    Points : 201
    Points
    201
    Par défaut
    les Jpanel ne gerent pas la position des éléments, c'est les Layout qui font ca

  3. #3
    Membre actif Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Points : 205
    Points
    205
    Par défaut
    Tu peux utiliser un XYLayout();
    Je te donne le code d'un XYLayout() que j'ai amélioré puisque tu ne pouvais positionner que 100 composants :

    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
    import java.awt.*;
    import javax.swing.*;
    import java.util.*;
     
    class XYLayout implements LayoutManager {
        Dimension size;
    	private JComponent[] components;
    	private int[] componentX;
    	private int[] componentY;
    	private int[] componentH;
    	private int[] componentW;
    	private int numComponents = 0;
     
        public XYLayout(int width, int height) {
            size = new Dimension(width, height);
    		components = new JComponent[0];
    		componentX = new int[0];
    		componentY = new int[0];
    		componentW = new int[0];
    		componentH = new int[0];
        }
    	public int getIDComponent(JComponent comp){
    		int retour = -1;
    		for(int i=0;i<components.length;i++){
    			if(comp==components[i]) {
    				retour=i;
    				i=components.length;
    			}
    		}
    		return retour;
    	}
    	public int[] getDefinition(int id){
    			int retour[] = new int[4];
    			retour[0]=componentX[id];
    			retour[1]=componentY[id];
    			retour[2]=componentW[id];
    			retour[3]=componentH[id];
    			return retour;
    	}
    	public void setDefinition(int id,int[] param){
    			componentX[id]=param[0];
    			componentY[id]=param[1];
    			componentW[id]=param[2];
    			componentH[id]=param[3];
    	}
        public void setSize(Dimension s) {
            size = s;
        }
        public Dimension getSize() {
            return size;
        }
        public void addLayoutComponent(String n, Component c) {
    		try{
    		int longueur = components.length+1;
    		int[] componentXTemp = new int[longueur],
    				componentYTemp = new int[longueur],
    				componentWTemp = new int[longueur],
    				componentHTemp = new int[longueur];
    		JComponent[] componentsTemp = new JComponent[longueur];
    		for(int i=0;i<longueur-1;i++){
    			componentsTemp[i]=components[i];
    			componentXTemp[i]=componentX[i];
    			componentYTemp[i]=componentY[i];
    			componentWTemp[i]=componentW[i];
    			componentHTemp[i]=componentH[i];
    		}
    		componentsTemp[numComponents]= (JComponent)c;
    			StringTokenizer st = new StringTokenizer(n,",");
    			componentXTemp[numComponents] = Integer.parseInt(st.nextToken());
    			componentYTemp[numComponents] = Integer.parseInt(st.nextToken());
    			componentWTemp[numComponents] = Integer.parseInt(st.nextToken());
    			componentHTemp[numComponents] = Integer.parseInt(st.nextToken());
    			numComponents++;
    			components=componentsTemp;
    			componentX=componentXTemp;
    			componentY=componentYTemp;
    			componentW=componentWTemp;
    			componentH=componentHTemp;
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
        }
        public void removeLayoutComponent(Component c){
        }
        public Dimension preferredLayoutSize(Container parent) {
            return size;
        }
        public Dimension minimumLayoutSize(Container parent) {
            return size;
        }
        public void layoutContainer(Container parent) {
            if(parent.countComponents()==0)return;
    		for(int i=0;i<numComponents;i++) {
    			components[i].reshape(componentX[i],componentY[i],componentW[i],componentH[i]);
    			components[i].validate();
    		}
        }
    }

  4. #4
    Membre actif Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Points : 205
    Points
    205
    Par défaut
    Pour l'utiliser, tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    JFrame fen = new JFrame();
    Container co = fen.getContentPane();
    int largeur = 500, //largeur de ton composant
        hauteur = 300; //hauteur de ton composant
    co.setLayout(new XYLayout(largeur,hauteur));
    fen.setBounds(0,0,largeur,hauteur);
    co.add("10,20,100,25",new JButton("Mon bouton"));
    // Tu dois entrer en paramètre la position de tes composants.
    // Ici, ce sera :
    // x = 10
    // y =20
    // largeur = 100
    // hauteur = 25
    Voila ;-)

  5. #5
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    En général les layout manager peuvent prendre en paramètre dans leur constructeur l'espace ( horizontal et vertical ) entre les différents composants qu'il contient ( appelé hgap et vgap dans la javadoc ).
    Ainsi, si tu veux mettre un grand espacement ( 100 pixels par exemple ) tu peux construire tes layouts de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BorderLayout bl=new BorderLayout(100,100);
    FlowLayout fl=new FlowLayout(FlowLayout.CENTER,100,100);
    GridLayout gl=new GridLayout(nLignes,nColonnes,100,100);
    etc...

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Et accessoirement certains layout permettent de fixer des marges aux composants, en particulier le GridBagLayout
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

Discussions similaires

  1. [2.3.1] Gérer les espaces entre éléments
    Par peuplier dans le forum BIRT
    Réponses: 8
    Dernier message: 01/11/2013, 19h09
  2. Détecter si espace entre section dans fichier ini !
    Par cincap dans le forum Débuter
    Réponses: 18
    Dernier message: 29/10/2012, 16h42
  3. Affichage éléments dans JPanel
    Par bbtreso dans le forum Débuter
    Réponses: 7
    Dernier message: 26/08/2011, 15h49
  4. Supprimer espace entre référence dans la bibliographie
    Par duvi86 dans le forum Bibliographies - Index - Glossaires
    Réponses: 0
    Dernier message: 01/02/2010, 14h28
  5. Espace entre guillemets dans un lstset
    Par Sandro Munda dans le forum Mise en forme
    Réponses: 2
    Dernier message: 17/11/2007, 14h11

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