Objets Graphiques

publicité
Les gestionnaires de placement
Les paquetages graphiques de Java mettent à la
disposition des programmeurs des objets qui vont
l'aider à placer les objets graphiques dans un
conteneur.
BorderLayout
BoxLayout
Java : Les objets graphiques
CardLayout
FlowLayout
GridBagLayout
GridLayout
SpringLayout
Cours Java :Graphique
1
Cours Java :Graphique
2
Le BorderLayout
Les gestionnaires de placement
Les conteneurs (racines) de composants ont un
gestionnaire de placement par défaut :
BorderLayout
Le gestionnaire sera responsable du placement des
composants lorsque par exemple l'utilisateur va
modifier la taille d'un composant.
La méthode setLayout() permet de modifier le
gestionnaire de placement
Le BorderLayout partage le conteneur en 5 parties
Il est possible de placer les composants en utilisant
des positions absolues
setLayout(null) // il n'y a plus de gestionnaire de
placement
Cours Java :Graphique
3
Le BorderLayout
top, bottom, left, right, et center
Lorsque les composants contenus n'occupent
pas tout l'espace, la partie centre va occuper
l'espace disponible
Cours Java :Graphique
Le BorderLayout
Lors de l'ajout d'un composant, la partie du centre
est utilisée par défaut
Les constantes suivantes peuvent aussi être
utilisées
JFrame frame = new JFrame("BorderLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = frame.getContentPane();
JButton button = new JButton("Button 1 (PAGE_START)");
pane.add(button, BorderLayout.PAGE_START);
JFrame frame = new JFrame("BorderLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = frame.getContentPane();
JButton button = new JButton("Button 1 (NORD)");
pane.add(button, BorderLayout.NORTH);
button = new JButton("Button 2 (CENTER)");
button.setPreferredSize(new Dimension(200, 100));
pane.add(button, BorderLayout.CENTER);
button = new JButton("Button 2 (CENTRE)");
button.setPreferredSize(new Dimension(200, 100));
pane.add(button, BorderLayout.CENTER);
button = new JButton("Button 3 (LINE_START)");
pane.add(button, BorderLayout.LINE_START);
button = new JButton("Button 3 (OUEST)");
pane.add(button, BorderLayout.WEST);
button = new JButton("Long-Named Button 4 (PAGE_END)");
pane.add(button, BorderLayout.PAGE_END);
button = new JButton("Long-Named Button 4 (SUD)");
pane.add(button, BorderLayout.SOUTH);
button = new JButton("5 (LINE_END)");
pane.add(button, BorderLayout.LINE_END);
frame.pack();
frame.setVisible(true);
button = new JButton("5 (EST)");
pane.add(button, BorderLayout.EAST);
frame.pack();
frame.setVisible(true);
Cours Java :Graphique
5
Le BoxLayout
Cours Java :Graphique
6
Le BoxLayout
Le gestionnaire BoxLayout permet de placer les
composants suivant l'axe des X ou l'axe des Y.
Il respecte au mieux les préférences des
composants (taille et alignement)
Cours Java :Graphique
4
7
JFrame frame = new JFrame("BoxLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = frame.getContentPane();
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
float alignement = Component.CENTER_ALIGNMENT;
JButton button = new JButton("Button 1");
button.setAlignmentX(alignement);
pane.add(button);
button = new JButton("Button 2");
button.setAlignmentX(alignement);
pane.add(button);
button = new JButton("Button 3");
button.setAlignmentX(alignement);
pane.add(button);
button = new JButton("Button le plus large");
button.setAlignmentX(alignement);
pane.add(button);
button = new JButton("Button 5");
button.setAlignmentX(alignement);
pane.add(button);
frame.pack();
frame.setVisible(true);
Cours Java :Graphique
8
Le CardLayout
Le CardLayout
Le gestionnaire CardLayout permet de partager le
même espace entre plusieurs conteneurs.
On choisit le conteneur en indiquant son nom, ou le
premier, le dernier, le suivant, le précédent.
Cours Java :Graphique
setLayout(new BorderLayout());
JPanel card1 = new JPanel();
JPanel radioPane = new JPanel();
card1.add(new JButton("Button 1"));
radioPane.setLayout(new
card1.add(new JButton("Button 2"));
BoxLayout(radioPane,
card1.add(new JButton("Button 3"));
BoxLayout.X_AXIS));
ButtonGroup bg = new
JPanel card2 = new JPanel();
ButtonGroup();
card2.add(new
JRadioButton b = new
JTextField("TextField", 20));
JRadioButton(VISUA);
b.setActionCommand(VISUA);
cards = new JPanel(new
b.addActionListener(this);
CardLayout());
bg.add(b);
cards.add(card1, VISUA);
radioPane.add(b);
cards.add(card2, VISUB);
b = new JRadioButton(VISUB);
b.setActionCommand(VISUB);
add(radioPane,
b.addActionListener(this);
BorderLayout.PAGE_START);
bg.add(b);
add(cards, BorderLayout.CENTER);
radioPane.add(b);
public void actionPerformed(ActionEvent e) {
CardLayout cl = (CardLayout)(cards.getLayout());
cl.show(cards, e.getActionCommand());
}
9
10
Cours Java :Graphique
Le FlowLayout
Le FlowLayout
Le gestionnaire FlowLayout est le gestionnaire par
défaut du conteneur JPanel.
public class FlowLayoutDemo {
Il place les composants de gauche à droite sur la
même ligne. Lorsqu'il n'y a plus de place il va à la
ligne suivante.
public static void main(String[] args) {
JFrame frame = new JFrame("FlowLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(new JButton("Button 1"));
contentPane.add(new JButton("Button 2"));
contentPane.add(new JButton("Button 3"));
contentPane.add(new JButton("Long-Named Button 4"));
contentPane.add(new JButton("5"));
frame.pack();
frame.setVisible(true);
}
}
Cours Java :Graphique
11
12
Cours Java :Graphique
Le GridLayout
Le GridLayout
Le gestionnaire GridLayout gère les composants
comme des cellules dans un tableau
public class GridLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("GridLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new GridLayout(3,3,5,5));
Le constructeur permet de spécifier le nombre de
lignes et de colonnes
new GridLayout(nbLignes, nbColonnes);
Gap V
contentPane.add(new JButton("1"));
contentPane.add(new JButton("2"));
contentPane.add(new JButton("3"));
contentPane.add(new JButton("4"));
contentPane.add(new JButton("5"));
contentPane.add(new JButton("6"));
contentPane.add(new JButton("7"));
contentPane.add(new JButton("8"));
contentPane.add(new JButton("9"));
contentPane.add(new JButton("10"));
frame.pack();
frame.setVisible(true);
Si les nombres de lignes et de colonnes sont
spécifiés, le nombre de colonnes est ignoré si il
n'y a pas assez d'éléments.
Gap H
colonnes
lignes
}
}
Cours Java :Graphique
13
Cours Java :Graphique
14
Téléchargement