BorderLayout

Résolu
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 - 14 juin 2011 à 14:46
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 - 15 juin 2011 à 10:15
Bonjour,
j'ai trouvé l'exemple qui suit sur le site officiel de java.
Je me demande comment se fait-il que l'on n'a pas codé:
 frame.setLayout(new BorderLayout());
avant de faire
		frame.getContentPane().add(yellowLabel, BorderLayout.CENTER);


Merci pour la réponse:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TopLevelDemo{
/**
 * Create the GUI and and show it.For thread safety, this method
 * should be invoked from the event dispatching thread
 */
private static void createAndShowGUI(){
JFrame frame=new JFrame("TopLevelDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Create a menu bar. Make it have a green background
JMenuBar greenMenuBar=new JMenuBar();
greenMenuBar.setOpaque(true);
greenMenuBar.setBackground(new Color(154,165,127));
greenMenuBar.setPreferredSize(new Dimension(200,20));

//Create a yellow label in order to put it under this menu bar
JLabel yellowLabel=new JLabel();
yellowLabel.setOpaque(true);
yellowLabel.setBackground(new Color(248,213,231));
yellowLabel.setPreferredSize(new Dimension(200,180));

//Set the menu bar and add the the label to the content pane	
frame.setJMenuBar(greenMenuBar);
frame.getContentPane().add(yellowLabel, BorderLayout.CENTER);

//Display the window
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]){
//Schedule a job for the event-dispatching thread
//Creating and showing this application's GUI
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){
createAndShowGUI();
}
});
}
}
A voir également:

4 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 juin 2011 à 08:58
Par défaut, les panels ont déjà un layout, je crois que c'est un FlowLayout mais je n'en suis pas certain donc, tu n'es pas obligé de le faire.

Si ce qui te pose problème est que la fonction n'ait pas été redéfinie pour les frames, oui, c'est vrai que ca n'a pas été très bien géré. En général, je n'étends jamais la classe JFrame, j'étends toujours JPanel et ensuite, j'ajoute le panel dans la une frame.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
14 juin 2011 à 14:52
Je ne comprends rien quelle est ta question ?
0
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 9
14 juin 2011 à 17:29
je pense qu'avant de faire frame.add(), il faut d'abord faire frame.setLayout(), non ?
0
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 9
15 juin 2011 à 10:15
oui, vous avez raison: JFrame a un layout par défaut c'est Border Layout
c'est pour celà qu'ils n'ont pas mis le setBorderLyaout()
merci beaucoup pour la réponse
0
Rejoignez-nous