La mise en page : les layouts managers
Un layout manager est un objet qui,
associé à un conteneur C, détermine
la taille et la position des composants
graphiques qui appartiennent à C.
Conteneur
de top-level
LayoutManager
Les layout managers : layout absolu
JFrame frame = new JFrame("Example JFrame");
frame.setSize(280, 130);
Container container1 = frame.getContentPane();
container1.setLayout(null);
JTextField component1 = new JTextField("component1");
component1.setBounds( 25,
10,
(int)component1.getPreferredSize().getWidth(),
(int)component1.getPreferredSize().getHeight());
JCheckBox component2 = new JCheckBox("component2");
component2.setBounds( 100,
60,
(int)component2.getPreferredSize().getWidth(),
(int)component2.getPreferredSize().getHeight());
frame.getContentPane().add(component1);
frame.getContentPane().add(component2);
frame.setVisible(true);
Les layout managers : BorderLayout
C’est le layout manager par défaut
pour les conteneurs de top-level.
• Cinq Fils
– Nord
– Est
– Sud
– Ouest
– Centre
• Nord prend toute la largeur disponible (getWidth())
mais juste sa hauteur préférée (getPreferredSize())
• … ainsi de suite et Center prend tout ce qui reste
container.add(myComponent, BorderLayout.NORTH);
Reprenons notre exemple
JFrame frame = new JFrame("Example JFrame");
Container container1 = frame.getContentPane();
JPanel bluePanel = new JPanel();
bluePanel.setBackground(new Color(0, 0, 200));
JTextField component1 = new JTextField("component1");
JCheckBox component2 = new JCheckBox("component2");
JButton component3 = new JButton("component3");
GridLayout layoutBluePanel = new GridLayout(2, 1);
layoutBluePanel.setVgap(3);
bluePanel.setLayout(layoutBluePanel);
container1.add(bluePanel, BorderLayout.
CENTER
);
container1.add(component3, BorderLayout.
EAST
);
bluePanel.add(component1);
bluePanel.add(component2);
frame.pack();
frame.setVisible(true);