Rapport oncf
1
Premier exemple.
Nous utilisons ici les composants les plus communs d'une interface. Leur traduction en Swing : - Une fenêtre principale (avec boutons d'agrandissement, réduction, fermeture…) : JFrame - Un plan rectangulaire : JPanel - Un bouton : Jbutton - Une zone texte : Jlabel
2
Le modèle par Container
La JFrame est un composant qui contient tous les autres. Le JPanel est un container intermédiaire qui va se charger de contenir le label et le bouton. Le JButton et le JLabel sont des composants atomiques. Autres exemples : zone de texte éditable (JTextField), table (JTable), etc…
Diagramme de hiérarchie (contenance) – arborescence :
Remarque : tous les container de tête dans la hiérarchie (JFrame, JWindow…) contiennent un container intermédiaire qui se charge de contenir les fils (contentPane)
3
Le code de l'exemple :
import javax.swing.*; import java.awt.*; public class Exemple1 { public static void main(String[] args) { JFrame frame = new JFrame(”exemple”); JButton button = new JButton(”clic clic”); JLabel label = new JLabel(”un petit texte”); JPanel pane = new JPanel(); pane.add(button); pane.add(label); frame.getContentPane().add(pane, BorderLayout.CENTER); } }
4
Agencer les composants avec les Layouts
Le layout par défaut : FlowLayout
Le plus utilisé : BorderLayout
Autres layouts : BoxLayout, GridLayout
5
Utiliser le BorderLayout
⇒ Ajouter au panel avec une contrainte frame.getContentPane().add(pane, BorderLayout.CENTER);
Exercice : modifier l'exemple pour avoir :
Remarque : définir le layout du JPanel avec pane.setLayout(new BorderLayout())
6
Solution : JFrame frame = new JFrame("exemple"); JButton button = new JButton("clic clic"); JLabel label = new JLabel("un petit texte"); JButton button2 = new JButton("deuxieme bouton"); JPanel pane = new JPanel(); pane.setLayout(new BorderLayout()); pane.add(button, BorderLayout.NORTH);