Académique Documents
Professionnel Documents
Culture Documents
Les containers
- JWindow JFrame JDialog JFileDialog - JPanel Applet - JTabbedPane - JScrollPane
Composants lmentaires
JLabel JButton JCheckbox JRadioButton JTextField JTextArea ButtonGroup JComboBox JList JScrollBar JMenuBar JPopupMenu
3
Composants complexes
Exercice
Raliser une classe First qui affiche une fentre (JFrame) contenant un bouton (JButton)
Cf. mthodes add et setVisible de JFrame
GroupLayout
http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
6
Exemples de dispositions
import java.awt.Container; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JButton; public class GridLayoutDemo{ public static void main(String[] args) { JFrame fen=new JFrame("GridLayoutDemo"); Container tmp = fen.getContentPane(); tmp.setLayout(new GridLayout(3,2)); tmp.add(new JButton("Button 1")); tmp.add(new JButton("Button 2")); tmp.add(new JButton("Button 3")); tmp.add(new JButton("Long-Named Button 4 ")); tmp.add(new JButton("5")); fen.setSize(400,200); fen.setVisible(true); } }
import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JButton; import javax.swing.JFrame; public class BorderLayoutDemo { public static void main(String[] args) { JFrame fenetre=new JFrame("BorderLayoutDemo"); Container tmp = fenetre.getContentPane(); tmp.setLayout(new BorderLayout()); tmp.add(new JButton("Button 1(PAGE_START)"), BorderLayout.NORTH); tmp.add(new JButton("Button 3 (LINE_START)"), BorderLayout.WEST); tmp.add(new JButton("Button 2 (CENTER)"), BorderLayout.CENTER); tmp.add(new JButton("5 (LINE_END)"), BorderLayout.EAST); tmp.add(new JButton("Long-Named Button 4 (PAGE_END)"), BorderLayout.SOUTH); fenetre.setSize(600,400); fenetre.setVisible(true); } }
Etapes classiques
// Cration de la fentre et du container JFrame frame = new JFrame("ExempleSimple"); JPanel panel = new JPanel(); // Dfinition du gestionnaire de placement panel.setLayout(new GridLayout(1,2)); // Cration des composants JLabel label = new JLabel("Entrer votre nom"); JTextField textField = new JTextField("toto"); // Ajout des composants au container panel.add(label); panel.add(textField); // Ajout du container la fentre frame.getContentPane().add(panel); // Affichage de la fentre frame.pack(); frame.setVisible(true);
8
Exercice
Ralisez l'interface suivante :
Source de l vnement
vnements
couteurs
JButton, JTextField
ActionEvent, MouseEvent
ActionListener, MouseListener
10
Les acteurs
Le composant
Indique les vnements qu'il peut gnrer. Button : MouseEvent, ActionEvent, ComponentEvent
L'vnement
Indique l'action que l'utilisateur a gnre. Ex : MouseEvent
Le listener
Il indique le traitement faire sur une catgorie d'vnements MouseListener, ActionListener
12
Exercice : Interaction 1
Mettre en place les interactions :
1 Dclarer le listener qui affiche bonjour sur la console chaque clic sur un des deux boutons 2 Abonner les boutons sur ce listener
* XXListener : classe qui implante le Listener choisi * Abonnement : Utiliser la mthode addXXListener(XXListener objetListener) sur le composant qui doit gnrer l'vnement
13
Exercice : Interaction 2
Mettre en place les interactions :
1 Dclarer un listener qui affiche dans le textfield la valeur du bouton cliqu 2 Abonner les boutons sur ce listener
* XXListener : classe qui implante le listener choisi * Abonnement : Utiliser la mthode addXXListener(XXListener objetListener) sur le composant qui doit gnrer l'vnement
14
Pour les composants lmentaires, il existe un vnement ActionEvent, qui reprsente l'interaction standard avec l'utilisateur
Click sur bouton ==> ActionEvent DoubleClick sur une liste ==> ActionEvent Click sur un lment de liste ==> ActionEvent <Return> la fin d'une saisie dans un TextField ==> ActionEvent
15
java.util.EventObject java.util.EventListener
S
A
java.awt.AWTEvent
A
ComponentAdapter ContainerListener
A
ContainerEvent
ContainerAdapter FocusListener
A
FocusEvent InputEvent
A
FocusAdapter KeyListener
A
KeyEvent
KeyAdapter MouseListener
A
MouseEvent
MouseAdapter MouseMotionListener
A
PaintEvent
MouseMotionAdapter WindowListener
A
WindowEvent
16
}
public void focusLost(FocusEvent e){ }
Modifiez votre classe First afin que tous les boutons soient abonns une instance de votre FocusListener
addFocusListener(<unFocusListener>);
17
18
Exercice de synthse
Creer une classe Etudiant
attributs nom, prenom, num etudiant un constructeur donnant des valeurs pour les attributs une mthode toString Tester avec un main que vous commenterez ensuite.
Dvelopper une interface graphique pour ajouter, supprimer, rechercher, afficher un tudiant
Faites une conception de linterface avant de vous lancer dans le code!
19