Boîte à outils graphique = ensemble de classes Java

Faire une interface graphique avec Java2d
et Swing
Boîtes à outils graphiques
Boîte à outils graphique = ensemble
de classes Java permettant de
développer des interfaces homme-
machine
Il faut :
Pouvoir définir une apparence graphique
Écouter les actions de l’utilisateur
Dans ce cours…
Nous utilisons les boîtes à outils AWT
(Abstract Window Toolkit) et Swing.
La plupart des classes de Swing ont
leur équivalent en AWT
=> Alors pourquoi AWT+Swing et
non pas simplement AWT ?
AWT vs. Swing
Chaque plateforme (Windows, Unix,
Mac…) dispose de ses propres
éléments graphiques (fenêtres,
boutons, etc.)
Windows 2000
Mac OS X
AWT vs. Swing
Avec Swing, on peut définir le "look
and feel" de son interface.
=> Le rendu sera le même quelle que
soit la plateforme
Windows 2000 Mac OS X
Définir le rendu graphique d’une interface
Hiérarchie de composants graphiques
Les éléments d’une interface sont organisés selon
une hiérarchie.
La racine est un composant conteneur "top-
level"
Les nœuds sont des composants conteneurs
Les feuilles sont de simples composants ou des
composants conteneurs
Top-level conteneurs
• JFrame
(application)
• JDialog
(dépendant d'un autre top-level)
• JApplet
(applet)
Nœuds conteneurs intermédiaires
On utilise des composants de la classe
:
- javax.swing.JPanel
- javax.swing.JScrollPane
- …
Les feuilles
Dans un premier temps, nous nous
intéressons aux composants
prédéfinis de swing (Swing widgets)
Nous verrons plus tard comment
faire nos propres composants
Les Swing widgets
Voir :
http://java.sun.com/docs/books/tutorial/uiswing/components/components.html
Quelques exemples :
javax.swing.JComponent
javax.swing.JCheckbox
javax.swing.JButton
Plus d’exemples
JButton
JLabel (avec ou
sans image)
JTextField (+JPasswordField + JFormatedTextField)
Plus d’exemples
JComboBox
JProgressBar
JSlider
JSpinner
JList
Exemple d’une hiérarchie
Javax.swing.JPanel
Javax.swing.JComponent Javax.swing.JCheckbox
Javax.swing.JButton
Conteneur
de top-level
Javax.swing.JFrame
Exemple d’une hiérarchie
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);
container1.add(component3);
bluePanel.add(component1);
bluePanel.add(component2);
frame.pack();
frame.setVisible(true);
Et la mise en page ?
Comment obtenir cette organisation
spatiale ?
=> Il faut spécifier la mise en page
des différents nœuds et feuilles.
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);
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !