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 :

Positionnement des components JPanel


Sujet :

AWT/Swing Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Positionnement des components JPanel
    Bonjour,

    Je commence à m'intéresser aux interface graphique avec java mais je ne comprend pas comment fonctionne JPanel ou setBounds ou simplement les components.

    Je souhaite crée une interface graphique pour un system de tchat déjà fonctionnel mais comme vous pouvez le voir sur l'image et dans le code, j'implémente le JTextField dans un panel qui grâce au setBounds est sensé être redimensionné cependant il apparait en haut sans prendre en compte la redimension du setBounds.

    Pouvez-vous m'expliquer comment faire pourque les components soit dans le Panel choisis.
    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
     
    package fr.dinge;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Toolkit;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
     
    public class Main {
     
    	public static Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
    	public static int Swidth = (int)size.getWidth();
    	public static int Sheight = (int)size.getHeight();
     
    	public static void main(String[] main) {
    		Accueil.show();
    	}
    }
     
    class Accueil {
     
    	public static int width = 1100;
    	public static int height = 700;
    	private static int newX = 0;
    	private static int newY = 0;
    	private static int newwidth = 1100;
    	private static int newheight = 700;
     
    	public static void show() {
    		JFrame frame = new JFrame();
    		frame.setTitle("SH Project");
    		frame.setBounds((Main.Swidth/2-width/2), (Main.Sheight/2-height/2), width, height);
    		frame.setBackground(Color.WHITE);
     
    		JPanel Pfriend = Friends();
    		frame.add(Pfriend);
    		JPanel header = Header();
    		frame.add(header);
    		JPanel contenu = Contenu();
    		frame.add(contenu);
     
    		frame.setUndecorated(true);
    		frame.setResizable(false);
    		frame.setVisible(true);
    	}
     
    	private static JPanel Friends() {
    		int width = 250;
    		JPanel Panel = new JPanel();
    		Panel.setBounds(0, 0, width, newheight);
    		Panel.setBorder(null);
    		Panel.setBackground(Color.RED);
    		newX += width;
    		return Panel;
    	}
     
    	private static JPanel Header() {
    		int height = 100;
    		JPanel Panel = new JPanel();
    		Panel.setBounds(newX, newY, newwidth, height);
    		Panel.setBorder(null);
    		Panel.setBackground(Color.GREEN);
    		newheight -= height;
    		newY += height;
    		return Panel;
    	}
     
    	private static JPanel Contenu() {
    		JPanel Panel = new JPanel();
    		Panel.setBounds(newX, newY, newwidth, newheight);
    		Panel.setBackground(Color.BLUE);
    		Panel.add(new JTextField("Bonjour"));
    		return Panel;
    	}
    }
    Nom : probleme.PNG
Affichages : 1916
Taille : 6,6 Ko

  2. #2
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut il faut utiliser le contentPane
    bonsoir,

    ayant eu un problème similaire au début, je te propose mon idée.

    Il est malvenu de travailler directement dans une fenêtre pour y installer des panels ou autre directement. Le résultat est souvent non conforme, voir aléatoire.

    Avant toute chose, il faut récupérer le "contentPane", c'est à dire, la surface utile disponible pour l'utilisateur, que java gère tout seul, et y affecter un conteneur que tu créés.
    Ensuite, tu oublies ta fenêtre et tu ne travailles que sur la "zone utile", qui est le JPanel que tu as attribué pour cette zone.

    Voila un code possible :

    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
     
     
    public class Main {
     
     
    		public static Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
    		public static int Swidth = (int)size.getWidth();
    		public static int Sheight = (int)size.getHeight();
     
    		public static void main(String[] main) {
    			Accueil.show();
    		}
    	}
     
    	class Accueil {
     
    		public static int width = 1100;
    		public static int height = 700;
    		private static int newX = 0;
    		private static int newY = 0;
    		private static int newwidth = 1100;
    		private static int newheight = 700;
     
    		public static void show() {
    			JFrame frame1 = new JFrame();
    			frame1.setTitle("SH Project");
    			frame1.setBounds((Main.Swidth/2-width/2), (Main.Sheight/2-height/2), width, height);
    		//	frame1.setBackground(Color.WHITE);
    			JPanel frame2 = new JPanel();
    			frame2.setBackground(Color.white);
    			frame2.setLayout(null);
    			frame1.setContentPane(frame2);
     
     
    			JPanel Pfriend = Friends();
    			frame2.add(Pfriend);
    			JPanel header = Header();
    			frame2.add(header);
    			JPanel contenu = Contenu();
    			frame1.add(contenu);
     
    		//	frame1.setUndecorated(true);
    			frame1.setResizable(false);
    			frame1.setVisible(true);
    		}
     
    		private static JPanel Friends() {
    			int width = 250;
    			JPanel Panel = new JPanel();
    			Panel.setBounds(0, 0, width, newheight);
    			Panel.setBorder(null);
    			Panel.setBackground(Color.RED);
    			newX += width;
    			return Panel;
    		}
     
    		private static JPanel Header() {
    			int height = 100;
    			JPanel Panel = new JPanel();
    			Panel.setBounds(newX, newY, newwidth, height);
    			Panel.setBorder(null);
    			Panel.setBackground(Color.GREEN);
    			newheight -= height;
    			newY += height;
    			return Panel;
    		}
     
    		private static JPanel Contenu() {
    			JPanel Panel = new JPanel();
    			Panel.setBounds(newX, newY, newwidth, newheight);
    			Panel.setBackground(Color.BLUE);
    			JTextField texte = new JTextField("Bonjour" + "  newX = " + newX + "  et newY = " + newY);
    			Panel.add(texte);
    			return Panel;
    		}
    	}
    De plus, pour le rendu que tu souhaites , tu peux utliser le layout "BorderLayout" pour ton panel et dispatcher facilement tes panels :
    - à droite pour le rouge : tu l'ajoutes au contentPane dans la zone de gauche (west)
    - en haut pour le panneau vert ( North)
    - partout sur l'espace restant (Center)

    J'espère que cela te sera utile.

    Bonne soirée.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Merci
    Merci beaucoup de ta réponse, j'ai un peu mieux compris comment fonctionnent les interfaces (j'ai eu du mal car j'ai fait pas mal de html/css)

    Peux-tu me dire si je me trompe d'après ce que j'ai compris ?

    Le contentPane permet de définir la zone utile qui est la zone non utiliser par les JPanel qui sont mis dedans après le setContentPane et ensuite je peux facilement travailler sur la zone utile ou les autres JPanel. Aussi le BorderLayout permet de gérer le placement des JPanel Center West East North South qui qui est plus simple que mes variables de position et de taille

    Cela va mettre très utile pour tous mes projets (je pourrais afficher des trucs autres par que dans un cmd)

  4. #4
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut JFrame et JPanel
    bonsoir,

    En fait la fenetre que tu construis, "JFrame" est la fenêtre graphique "support" de tout ce que tu afficheras dedans. Cependant, elle implique de travailler avec la partie utile de cette fenêtre pour le programmeur, qui se nomme le "contentPane". En gros, cela représente la fenêtre moins certaines marges et le ruban horizontal contenant les menus, les boutons classiques des fenêtres type windows, (trait "réduire", carré "agrandir" et croix "fermer la fenêtre.

    Pour travailler facilement, Il faut attribuer à cette zone utile, un conteneur, généralement de type "JPanel", qui te permettra de déposer ce que tu veux l'intérieur, et également de jouer avec les layouts pour le positionnement.
    Par défaut, le layout de positionnement des JPanel est BorderLayout je crois (à vérifier...) Tu peux donc en effet, ajouter les panneaux de couleur, en bas, en haut, à gauche ou à droite quand tu les ajoutes dans ton panel particulier affecté "contentPane.
    Quand tes panneaux sur les cotés sont ok, tu peux occuper le reste de la zone en attribuant la partie "center" de ton dernier panel dans le "contentPane.

    Il existe d'autres stratégies de positionnement dans un panel, comme le "layout(null)", où dans ce cas tu positionnes en absolu x et y. Pratique mais en cas de redimensionnement, il faut re-calculer toi même les positions de tes objets, sinon ils gardent les mêmes positions par rapport à l'angle référence surpérieur gauche et le reste du panel sera vide.

    Il y a beaucoup de ressources et d'exemples sur le web.

    Pour java, je trouve que le meilleur tuto est "koor java", en vidéo et à l'écrit, très bien réalisé et expliqué.

    En gros, oui, tu as compris le principal : ne jamais attaquer une JFrame, mais mettre un Jpanel comme "contentPane" et travailler dessus.

    Bon courage et au plaisir!...

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour, j'ai un peux avancer mais je me confronte a un nouveaux probleme de positionnement sur le bouton top

    Comment puis-je le repositionner j'ai essayer setBounds et BorderLayout sans succes

    Voici le code puis le rendu
    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
    package fr.dinge;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Point;
    import java.awt.Toolkit;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
     
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JEditorPane;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.SwingUtilities;
    import javax.swing.border.EmptyBorder;
    import javax.swing.text.Document;
    import javax.swing.text.html.HTMLEditorKit;
     
    public class Main {
     
     
    	public static Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
    	public static int Swidth = (int)size.getWidth();
    	public static int Sheight = (int)size.getHeight();
     
    	public static void main(String[] main) {
    		Accueil.show();
    	}
    }
     
    class Accueil {
     
    	public static int width = 1100;
    	public static int height = 700;
    	private static int newX = 0;
    	private static int newY = 0;
    	private static int newwidth = width;
    	private static int newheight = height;
     
    	public static void show() {
    		System.out.println("here");
    		JFrame frame = new JFrame();
    		frame.setTitle("SH Project");
    		frame.setBounds((Main.Swidth/2-width/2), (Main.Sheight/2-height/2), width, height);
    		frame.setBackground(Color.BLACK);
     
    		JPanel content = new JPanel();
    		content.setBackground(Color.BLACK);
    		content.setLayout(null);
    		frame.setContentPane(content);
     
     
    		JPanel Pfriend = Friends();
    		content.add(Pfriend);
    		JPanel header = Header();
    		content.add(header);
    		JScrollPane contenu = Contenu();
    		frame.add(contenu);
     
    		frame.setUndecorated(true);
    		frame.setResizable(false);
    		frame.setVisible(true);
    	}
     
    	private static JPanel Friends() {
    		int width = 250;
    		int height = newheight;
    		int X = newX;
    		int Y = newY;
    		JPanel Panel = new JPanel();
    		Panel.setBounds(X, Y, width, height);
    		Panel.setBorder(null);
    		Panel.setBackground(Color.RED);
    		newwidth -= width;
    		newX += width;
     
    		JButton top = new JButton("BTN");
    		top.setBackground(Color.YELLOW);
    /**/    top.setBounds(X, Y, width, 30);
                    Panel.add(top /*, BorderLayout.NORTH*/);
    		return Panel;
    	}
     
    	private static JPanel Header() {
    		int width = newwidth;
    		int X = newX;
    		int Y = newY;
    		int height = 100;
    		JPanel Panel = new JPanel();
    		Panel.setBounds(X, Y, width, height);
    		Panel.setBorder(null);
    		Panel.setBackground(Color.GREEN);
    		newheight -= height;
    		newY += height;
    		return Panel;
    	}
     
    	private static JScrollPane Contenu() {
    		JScrollPane Panel = getHTML.panelfromHTML("C:\\Users\\Utilisateur\\Desktop\\rdm.html");
            Panel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    		JScrollPane ScrollPane = new JScrollPane(Panel);
    		ScrollPane.setForeground(Color.BLACK);
    		ScrollPane.setBorder(null);
    		ScrollPane.setBounds(newX, newY, newwidth, newheight);
    		ScrollPane.setBackground(Color.BLACK);
    		ScrollPane.setBorder(new EmptyBorder(0, 0, 0, 0));
    		ScrollPane.getViewport().setViewPosition(new Point(0,0));
    		return ScrollPane;
    	}
    }
     
    class getHTML {
     
    	public static JScrollPane panelfromHTML(String URL) {
    		try {
    			File file = new File(URL);		
    				// Créer l'objet File Reader
    				FileReader fr;
    				fr = new FileReader(file);	
    			// Créer l'objet BufferedReader				
    			BufferedReader br = new BufferedReader(fr);	
    			StringBuffer sb = new StringBuffer();		
    			String line;
    			while((line = br.readLine()) != null)
    			{
    				// ajoute la ligne au buffer
    				sb.append(line);			
    			}
    			fr.close();
    			JScrollPane ScrollPane = HTMLtoPanel(sb.toString());
    			ScrollPane.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    			return ScrollPane;
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return null;
    	}
     
    	private static JScrollPane HTMLtoPanel(String htmlString) {
    		JEditorPane jEditorPane = new JEditorPane();
     
    		jEditorPane.setEditable(false);
     
    		JScrollPane scrollPane = new JScrollPane(jEditorPane);
    		scrollPane.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    		SwingUtilities.invokeLater(new Runnable() {
     
    			public void run() {
     
    				HTMLEditorKit kit = new HTMLEditorKit();
    				jEditorPane.setEditorKit(kit);
     
    				Document doc = kit.createDefaultDocument();
    				jEditorPane.setDocument(doc);
    				jEditorPane.setText(htmlString);
    			}
    		});
    		return scrollPane;
    	}
    }
    Nom : probleme.PNG
Affichages : 1747
Taille : 17,8 Ko
    Merci par avance

  6. #6
    Membre habitué

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 167
    Points : 162
    Points
    162
    Par défaut problème de layout
    bonjour,

    tu as fait le plus important : définir un "ContentPane" (panneau de contenu) et ne travailler que sur celui-ci, sans toucher à la "JFrame"."

    Tu as pensé à préciser que le contentPane prendrait une stratégie de positionnement des éléments de type absolu : ligne 52 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    content.setLayout(null);
    Tu as raison car cela te permet ensuite de positionner en absolu tes panels à gauche, en haut, et sur la surface restante.

    L'oubli que tu as fait, c'est que tu n'as pas précisé que sur ces panels secondaires, tu voulais également travailler en absolu, et positionner toi-même tes éléments par x, y , width et height.
    Donc quand il reçoit ta demande de positionnement du bouton, il ne peut pas l'appliquer car il a son layout par défaut, qui est je crois "FlowLayout", c'est à dire qu'il affiche les éléments comme ils viennent, centrés dans ton panel, tous à la suite.
    C'est pour cela que tu as ton bouton au milieu et tes tentatives sont inopérantes pour modifier cela.

    Fais quelque chose comme ceci :
    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
    private static JPanel Friends() {
    		int width = 250;
    		int height = newheight;
    		int X = newX;
    		int Y = newY;
    		JPanel Panel = new JPanel();
    		Panel.setBounds(X, Y, width, height);
    		Panel.setBorder(null);
    		Panel.setLayout(null);
    		Panel.setBackground(Color.RED);
    		newwidth -= width;
    		newX += width;
     
    		JButton top = new JButton("BTN");
    		top.setBackground(Color.YELLOW);
    		top.setBounds(X, Y, width, 30);
    		System.out.println("topX="+top.getX() + "   topY=" + top.getY() + "   width=" + top.getWidth() + "   height="+ top.getHeight());
                    Panel.add(top /*, BorderLayout.NORTH*/);
    		return Panel;
    	}
    Le seul changement notable, c'est le layout qui est définit à la ligne 9.

    Cela devrait pouvoir te débloquer....

    Bonne suite...

  7. #7
    Membre émérite
    Homme Profil pro
    Ingénieur en génie logiciel
    Inscrit en
    Juin 2012
    Messages
    913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur en génie logiciel
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 913
    Points : 2 607
    Points
    2 607
    Par défaut
    si tu désires te faciliter la tâche, regarde le miglayout
    https://www.miglayout.com/

    simple et permet de faire tout ce que les autres layout font

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2021
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Mig Layout
    Merci de vos réponses

    J'ai regardé MigLayout, le principe et comment cela fonctionne mais je préfère utiliser ma méthode actuelle car cela me permet d'avoir comme un Layout North et West mais le West est devant le North

    Merci quand même, cela me sera bien utile pour des projets futurs

  9. #9
    Membre émérite
    Homme Profil pro
    Ingénieur en génie logiciel
    Inscrit en
    Juin 2012
    Messages
    913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur en génie logiciel
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 913
    Points : 2 607
    Points
    2 607
    Par défaut
    il y a un pdf qui explique comment il fonctionne: http://www.miglayout.com/QuickStart.pdf

    sans compté les nombreux tuto sur le web

Discussions similaires

  1. Positionner des jlabel dans un jpanel
    Par sarra02 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 02/06/2015, 17h55
  2. Positionnement des composants sur JPanel
    Par zpico dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 19/10/2011, 14h43
  3. jPanel, et positionnement des éléments autour
    Par knice dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 04/04/2009, 18h10
  4. Positionner des JPanel
    Par Viscapon dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 07/06/2008, 19h26
  5. Positionnement des blocs
    Par Manio 54 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 10/08/2005, 19h05

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