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 :

Problème de Layout


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 83
    Points : 51
    Points
    51
    Par défaut Problème de Layout
    Salut à tous!

    Alors voila j'explique mon problème :

    J'ai une fenêtre (frame) avec deux panels dedans.

    Le premier panel que j'utilise, je l'ai mis dans la zone CENTER. Ce premier panel est une zone de dessin. Celui ci ne pose aucun problème.

    Le deuxième panel que j'utilise est situé dans la zone EAST.
    Dans ce panel j'utilise plusieurs composants swings (JScrollpane, JTextField, JLabel etc...). La plupart doivent s'afficher les uns en dessous des autres mais certains il faudrait que je les affiche côte à côte.

    Jusque là j'avais fait comme ceci pour essayer de les afficher (mais ils s'affichent tous les uns en dessous des autres) :
    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
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
     
    public class Fenetre 
    {
        private JLabel jLabelTitre;
        private JLabel jLabelBlocsDispo;
        private JLabel jLabelChangeAxe;
        private JLabel jLabelAxeVertical;
        privateJLabel jLabelAxeHorizontal;
        private JLabel jLabelRecherche;
        private JLabel jLabelLimInf;
        private JLabel jLabelLimSup;
     
        private JTextField jTextFieldLimInf;
        private JTextField jTextFieldLimSup;
     
        private JFrame frame;
     
        private JList list;
     
        private JScrollPane scrollPane;
        private JScrollPane jScrollPanePanel;
     
        private JComboBox jComboBoxAxeVertical;
        private JComboBox jComboBoxAxeHorizontal;
     
        private JPanel jPanelNorth;
     
        public Fenetre (Component component)
        {
            this.frame = new JFrame(frameName);
     
            // Création des Panels :
    	this.jPanelNorth = new JPanel();
    	BoxLayout BL = new BoxLayout (jPanelNorth, BoxLayout.Y_AXIS);
    	this.jPanelNorth.setLayout(null);
     
    	// Création des labels : 
    	this.jLabelTitre = new JLabel();
    	this.jLabelTitre.setText("Paramètres de visualisation :");
    	this.jLabelTitre.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	this.jLabelBlocsDispo = new JLabel();
    	this.jLabelBlocsDispo.setText("Blocs disponibles :");
    	this.jLabelBlocsDispo.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	this.jLabelChangeAxe = new JLabel();
    	this.jLabelChangeAxe.setText("Changer les axes du repères :");
    	this.jLabelChangeAxe.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	this.jLabelAxeVertical = new JLabel();
    	this.jLabelAxeVertical.setText("Axe vertical :");
    	this.jLabelAxeVertical.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	this.jLabelAxeHorizontal = new JLabel();
    	this.jLabelAxeHorizontal.setText("Axe horizontal :");
    	this.jLabelAxeHorizontal.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	this.jLabelRecherche = new JLabel();
    	this.jLabelRecherche.setText("Recherche :");
    	this.jLabelRecherche.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	this.jLabelLimInf = new JLabel();
    	this.jLabelLimInf.setText("Limite inf :");
    	this.jLabelLimInf.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	this.jLabelLimSup = new JLabel();
    	this.jLabelLimSup.setText("Limite sup :");
    	this.jLabelLimSup.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	this.jTextFieldLimInf = new JTextField();
    	this.jTextFieldLimInf.setMaximumSize(new Dimension(50,15));
    	this.jTextFieldLimInf.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	this.jTextFieldLimSup = new JTextField();
    	this.jTextFieldLimSup.setMaximumSize(new Dimension(120,15));
    	this.jTextFieldLimSup.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	// Liste contenant les blocs à insérer ou supprimer :
    	// (liste avec "ascenseur" -->  utilisation de scrollPane)
    	this.list = new JList();
    	try
    	{
    		File f = new File (nomDossier);
    		if (f.isDirectory())
    		{
    			String[] tab = f.list();
    			Vector vecteurNomFichier = new Vector();
    			for (int i=0; i<tab.length; i++)
    			{
    				File f2 = new File (nomDossier+tab[i]);
    				if (f2.isFile())
    					vecteurNomFichier.addElement (tab[i]);
    			}
    			list = new JList(vecteurNomFichier);
    		}
    		else
    			list = new JList();
    		list.setSelectionMode (javax.swing.ListSelectionModel.SINGLE_SELECTION);
    	}
    	catch (Exception e) {
    		System.out.println("Exception");
    		e.printStackTrace();
    	}
     
    	this.scrollPane = new JScrollPane (this.list);
    	this.scrollPane.setVisible(true);
    	this.scrollPane.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	// Création des ComboBox : 
    	this.jComboBoxAxeVertical = new JComboBox();
    	this.jComboBoxAxeVertical.setMaximumSize(new Dimension(150, 15));
     
    	this.jComboBoxAxeHorizontal = new JComboBox();
    	this.jComboBoxAxeHorizontal.setMaximumSize(new Dimension(150, 15));
     
    	// Création des boutons :
    	this.jButtonAjouter = new JButton();
    	this.jButtonAjouter.setText("Ajouter");
    	this.jButtonAjouter.setVisible(true);
    	this.jButtonAjouter.setMaximumSize(new Dimension(150, 15));
    	this.jButtonAjouter.setAlignmentX(Component.CENTER_ALIGNMENT);
    	this.jButtonAjouter.addActionListener(new java.awt.event.ActionListener() {
    		public void actionPerformed(java.awt.event.ActionEvent e) {
    		     // traitement
                    }    
    	});
     
    	this.jButtonEnlever = new JButton();
    	this.jButtonEnlever.setText("Enlever");
    	this.jButtonEnlever.setVisible(true);
    	this.jButtonEnlever.setAlignmentX(Component.CENTER_ALIGNMENT);
    	this.jButtonEnlever.setMaximumSize(new Dimension(150, 15));
    	this.jButtonEnlever.addActionListener(new java.awt.event.ActionListener() {
    		public void actionPerformed(java.awt.event.ActionEvent e) {
                                // traitement
    		}
    	});
     
            // Ces composants doivent s'afficher les uns au dessous des autres :
    	// Ajout des composants au panel
    	this.jPanelNorth.add(this.jLabelTitre);
    	this.jPanelNorth.add(Box.createVerticalStrut(15));
     
    	this.jPanelNorth.add(this.jLabelBlocsDispo);
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
    	this.jPanelNorth.add(this.scrollPane);
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
     
            // Ces deux composants doivent s'afficher cote à cote
    	this.jPanelNorth.add(this.jButtonAjouter);
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
    	this.jPanelNorth.add(this.jButtonEnlever);
     
            // Ces composants doivent s'afficher les uns au dessous des autres :
    	this.jPanelNorth.add(Box.createVerticalStrut(15));
    	this.jPanelNorth.add(this.jLabelChangeAxe);
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
    	this.jPanelNorth.add(this.jLabelAxeVertical);
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
    	this.jPanelNorth.add(this.jComboBoxAxeVertical);
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
    	this.jPanelNorth.add(this.jLabelAxeHorizontal);
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
    	this.jPanelNorth.add(this.jComboBoxAxeHorizontal);
     
    	this.jPanelNorth.add(Box.createVerticalStrut(15));
    	this.jPanelNorth.add(this.jLabelRecherche);
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
    	this.jPanelNorth.add(this.jLabelAxeVertical2);
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
     
            // Les deux composants suivants doivent s'afficher cote à cote 
            this.jPanelNorth.add(this.jLabelLimInf);
    	this.jPanelNorth.add(this.jTextFieldLimInf);
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
     
            // Les deux composants suivants doivent s'afficher cote a cote
    	this.jPanelNorth.add(this.jLabelLimSup);
    	this.jPanelNorth.add(this.jTextFieldLimSup);
     
    	this.jPanelNorth.add(Box.createVerticalStrut(10));
            // On met le Panel dans un scrollPane pour rajouter
    	// automatiquement des barres de défilement si nécessaire
    	this.scrollPanePanel = new JScrollPane (this.jPanelNorth);
    	this.scrollPanePanel.setVisible(true);
     
    	//frame.getContentPane().add(this.jPanelNorth, java.awt.BorderLayout.EAST);
    	this.frame.getContentPane().add(this.scrollPanePanel, java.awt.BorderLayout.EAST);
            // component est ma zone de dessin que je passe en paramètre au constructeur
    	this.frame.getContentPane().add(component, java.awt.BorderLayout.CENTER);
     
    	this.frame.pack();
    	this.frame.setVisible(true);
        }
    }
    Je sais que le layout que j'utilise : BoxLayout.Y_AXIS n'est pas le plus approprié pour ce que je veux faire mais je n'ai rien trouvé d'autre comme solution pour le moment...

    Est-ce que quelqu'un aurait une idée?

    Merci d'avance

  2. #2
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Je m'étonne que tu n'aies pas trouvé d'autres solutions que le BoxLayout ? Les autres layouts ne te conviennent pas ?

    Mon conseil : essaie de voir ton panel non pas comme une série de choses tantôt dessous les unes les autres, tantôt à coté, mais comme une série de choses qui servent à quelqu'un ou à quelque chose. Sors de l'espace à deux dimensions du JPanel.

    Tu verras alors que certaines actions vont ensemble, on un certain... layout non plus seulement pour le programmeur, mais aussi pour l'utilisateur. Cela te permettra de mieux les visualiser, de les rendre plus compréhensibles, pour toi et pour l'utilisateur, et surtout cela te permettra de mieux voir le layout en deux dimensions... pour toi.

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 83
    Points : 51
    Points
    51
    Par défaut
    Si j'ai trouvé d'autres choses que le BoxLayout comme par exemple, placer "manuellement" chaque composant (avec un setBounds) mais ca marche pas (et puis ca serait pas terrible je pense)

    J'ai vu aussi les GridBagLayout mais ca m'a l'air trop compliqué à utiliser (surtout que pour ce que je veux faire, il doit bien y avoir une solution simple )

  4. #4
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Bonjour,

    Peux tu nous faire un shéma de ce que tu veux faire, je pense que ca nous aiderait pas mal.
    Pourquoi ca marche jamais?Vive le café!

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 83
    Points : 51
    Points
    51
    Par défaut
    OK

    Pour mieux comprendre j'ai mis un aperçu écran de ma fenêtre en pièce jointe (la qualité de l'image laisse à désirer mais c'était pour réduire son poids).

    Est-ce que vous voyez les deux boutons "Ajouter" et "Enlever" en haut à drotie de l'image (sous une JList)?
    En gros par exemple, je voudrais que les boutons "Ajouter" et "Enlever" se retrouve cote à cote.

    De meme, on peut voir que j'ai un JTextField (en bas à droite de l'image) qui se trouve sous un JLabel, et bien j'aimerais que ce JTextField se retrouve à coté du JLabel.

    Est - ce que c'est plus clair que ce que j'avais dit auparavant? Sinon je peux essayer de donner plus de précisions?
    Images attachées Images attachées  

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Je pense que l'utilisation des GridBadLayouts n'est pas si compliqué que ca ... il suffit de les simplifier.

    J'avais commencé de faire une classe mais j'en ai trouver une sur le net :
    La voici :
    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
    102
    103
    104
    105
    106
    107
    108
    109
    110
    import java.awt.*;
     
    /**
       This class simplifies the use of the GridBagConstraints
       class.
    */
    public class GBC extends GridBagConstraints 
    {
     
    /**
          Constructs a GBC with a given gridx and gridy position and
          all other grid bag constraint values set to the default.
          @param gridx the gridx position
          @param gridy the gridy position
       */
       public GBC(int gridx, int gridy)
       {
          this.gridx = gridx;
          this.gridy = gridy;
       }
     
       /**
          Constructs a GBC with given gridx, gridy, gridwidth, gridheight
          and all other grid bag constraint values set to the default.
          @param gridx the gridx position
          @param gridy the gridy position
          @param gridwidth the cell span in x-direction
          @param gridheight the cell span in y-direction
       */
       public GBC(int gridx, int gridy, int gridwidth, int gridheight)
       {
          this.gridx = gridx;
          this.gridy = gridy;
          this.gridwidth = gridwidth; 
          this.gridheight = gridheight; 
       }
     
       /**
          Sets the anchor.
          @param anchor the anchor value
          @return this object for further modification
       */
       public GBC setAnchor(int anchor) 
       { 
          this.anchor = anchor; 
          return this;
       }
     
       /**
          Sets the fill direction.
          @param fill the fill direction
          @return this object for further modification
       */
       public GBC setFill(int fill) 
       { 
          this.fill = fill; 
          return this;
       }
     
       /**
          Sets the cell weights.
          @param weightx the cell weight in x-direction
          @param weighty the cell weight in y-direction
          @return this object for further modification
       */
       public GBC setWeight(double weightx, double weighty) 
       { 
          this.weightx = weightx; 
          this.weighty = weighty; 
          return this;
       }
     
       /**
          Sets the insets of this cell.
          @param distance the spacing to use in all directions
          @return this object for further modification
       */
       public GBC setInsets(int distance) 
       { 
          this.insets = new Insets(distance, distance, distance, distance*10);
          return this;
       }
     
       /**
          Sets the insets of this cell.
          @param top the spacing to use on top
          @param left the spacing to use to the left
          @param bottom the spacing to use on the bottom
          @param right the spacing to use to the right
          @return this object for further modification
       */
       public GBC setInsets(int top, int left, int bottom, int right) 
       { 
          this.insets = new Insets(top, left, bottom, right);
          return this;
       }
     
       /**
          Sets the internal padding
          @param ipadx the internal padding in x-direction
          @param ipady the internal padding in y-direction
          @return this object for further modification
       */
       public GBC setIpad(int ipadx, int ipady) 
       { 
          this.ipadx = ipadx; 
          this.ipady = ipady; 
          return this;
       }
    }
    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    JPanel panel = new JPanel();
    panel.setLayout(new GridBagLayout());
    panel.add(new JLabel("Toto"), new GBC(0,0).setAnchor(GBC.WEST).setInsets(10));
    panel.add(new JLabel("Tata"), new GBC(1,0).setAnchor(GBC.WEST).setInsets(10));
    Ce code devrait placer Toto et Tata l'un a coté de l'autre et ainsi de suite ...

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 83
    Points : 51
    Points
    51
    Par défaut
    Je n'ai pas très bien compris à quoi sert le setAnchor?

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 66
    Points
    66
    Par défaut
    Ca permet de connaitre le point d'acroche du composant.

    En fait tu n'en a peux être pas besoin, c'est utilisé juste lorsque tu souhaite faire une cellule qui puissent s'etendre sur plusieurs cellules.

    C'est le type de réalisation que tu peux faire avec le GridBadLayout.

    Le plus simple c'est de faire un schéma papier et de placer les composants comme tu le souhaites. (En définissant les coordonnées, les largeurs, etc ...)

    Si besoin de plus de précision, n'hésite pas !!!

    PS: je ne suis peu être pas très clair ...

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 83
    Points : 51
    Points
    51
    Par défaut
    Si tu es très clair.

    Mais j'ai un problème.

    Le truc, c'est qu'il faudrait que je crées deux cellules pour certaines lignes (pour afficher deux composant cote à cote) et les autres lignes auraient une seule cellule (un seul composant à afficher)?
    Mais je ne sais pas comment faire pour que certaines lignes contiennent une seule cellule (l'idéal serait que mon composant soit centré sur la ligne) et d'autres deux cellules.

    Tu vois ce que je veux dire?

    A mon avis, si j'ai bien compris ce que tu m'as dit avant, ca doit pouvoir se faire avec le setAnchor non?
    Le problème est que j'ai essayé plusieurs trucs mais rien ne me donne ce que je veux.

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 66
    Points
    66
    Par défaut
    Pour écrire sur plusieurs lignes ou colonnes ce sont les paramètres qui suivent la position :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    panel.add(new JLabel("Toto"), new GBC(0,0).setAnchor(GBC.WEST).setInsets(10));
    panel.add(new JLabel("Tata"), new GBC(1,0).setAnchor(GBC.WEST).setInsets(10));
    panel.add(new JLabel("Tutu"), new GBC(0,1,2,1).setAnchor(GBC.WEST).setInsets(10));
    Avec ceci tu obtiens normalement :
    Toto - Tata
    Tutu

    Apres pour centrer tutu, ya une méthode définit qui est setFill il me semble.
    Il faudrait rajouter .setFill(GBC.CENTER)

    A essayer. Si besoin je te fais un exemple dès que je peux ...

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 83
    Points : 51
    Points
    51
    Par défaut
    Merci!!

    Ca y est je suis arrivé exactement à ce que je voulais.
    Merci beaucoup de ton aide noirot, si j'avais du le faire tout seul j'y aurais passé un temps fou

    Et Merci au forum!!

  12. #12
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 66
    Points
    66
    Par défaut
    de rien

    Alors Petit tag résolu

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

Discussions similaires

  1. problème avec layout:menu
    Par khayri dans le forum Struts 1
    Réponses: 1
    Dernier message: 23/04/2007, 19h17
  2. [Struts-Layout] problème avec layout:datagrid
    Par khayri dans le forum Struts 1
    Réponses: 2
    Dernier message: 20/04/2007, 09h31
  3. [SashForm]Problème de layout
    Par Efkar dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 18/08/2006, 13h28
  4. Problème de layout
    Par menuge dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 10/05/2006, 16h47
  5. [JscrollPane]Problèmes avec layout du panel intérieur
    Par Baptiste Wicht dans le forum AWT/Swing
    Réponses: 14
    Dernier message: 19/03/2006, 13h08

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