Java Interfaces SWING
Java Interfaces SWING
Java Interfaces SWING
Concepts Généraux
Dr. BELHADAD Yehya
1 - Modèles de fenêtrage 2
Sans superposition
Avec superposition
Hiérarchique
2 - Les API graphiques 3
d'affichage
Afficher = appeler une succession de
fonctions graphiques
Représentation sous forme d'un arbre
d'affichage
On affiche récursivement, en profondeur
d'abord, tous les nœuds de l'arbre
On modifie l'arbre pour changer l'affichage
puis on réaffiche
5
JFrame
JTree JPanel
JPanel JToolbar
JRadioButton JButton
JRadioButton JButton
2 – Arbre Swing
JFrame
Package javax.swing
Relativement proche de AWT pour
faciliter la migration, ajout « J » avant
le nom des classes:
Construction d ’une 17
application
Construire un arbre d ’objets dérivés de
« JComponent »
Attacher des gestionnaires d ’événements
Ce sont les gestionnaires d ’événements qui
feront les actions et modifieront les
composants
Exemple 18
import java.awt.*;
import javax.swing.*;
class hwSwing {
}
Autre approche 19
import java.awt.*;
import javax.swing.*;
JFrame
JTree JPanel
JPanel JToolbar
JRadioButton JButton
JRadioButton JButton
Mon premier Composant 21
JFrame
fenêtre principale
JDialog
fenêtre de dialogue (modale)
Jwindow
show()
hide() ou dispose()
toFront() ou toBack()
setTitle(“titre !”)
setSize(int, int) et setResizable(false)
JLabel 22
Javax.swing.Jlabel
descriptif : texte statique + image
exemple : devant un champ de saisie
JLabel jl = new Jlavel(“Label 1”);
ou jl.setText(“Label 1”); // -> .getText()
jl.setIcon(new ImageIcon(“java.gif”));
jl.setVerticalTextPosition(SwingConstants.BOTTO
M)
jl.setHorizontalTextPosition(SwingConstants.CEN
TER);
JTextField 23
Javax.swing.JTextField
saisie de texte (non typé)
JTextField jt = new
JTextField(“Thomas”);
String nom = new String(“Thomas”);
jt.setText(nom);
jt.setColumns(nom.length());
jt.copy(); jt.cut(); jt.paste();
JButton 24
JToggleButton
deux états (setIcon et setSelectedIcon)
JCheckBox
cases à cocher
JRadioButton
dans un groupe de boutons “radio”
Exemple de Radio 26
Liste
déroulante (ouverte ou
fermée)
vector ou tableau d’objets passés
en paramètres
JComboBox cb = new JComboBox(
items);
cb.setMaximumRowCount(4);
cb.setEditable(true); // JTextField
JMenu 29
JPanel
conteneur
JScrollPane Panel
un seul composant !
barres de défilement
JScrollPane sp = new JScrollPane();
sp.add(monJLabel);
sp.setViewportView (monJLabel); ScrollPane
composants implémentant Scrollable
class MonLabel extends Jlabel implements Scrollable
Les composants de SWING 31
Tool bar
Internal frame
Layered pane
Composants de Swing 32
List
Slider
Table Text Tree
Capacités communes des
composants
33
(dés)activation
isEnabled() setEnabled(…)
(in)visible
setVisible(…) isVisible()
module le coût de l’instanciation d’un container !
tailles réelle et souhaitable
Dimension getSize() ou Dimension getSize(Dimension
r)
setSize(…)
Dimension getPreferredSize() ;
setPreferredSize(Dimension r);
Factory 34
Bordures
Border mbd= new Border(
BorderFactory.createEtchedBorder()
BorderFactory.createLoweredBevelBorder()
BorderFactory.createTitledBorder(“Titre !”)
etc… );
monJbutton.setBorder(mbd);
Curseur
Cursor nc = new Cursor(Cursor.CROSSHAIR_CURSOR);
monJbutton.setCursor(nc);
Couleurs 35
placement...
FlowLayout GridLayout
Place les composants Découpe en une
de gauche à droite grille régulière sur
laquelle les
CardLayout
composants sont
Superpose les placés
composants
GridBagLayout
Découpe en une
grille et place les
composants sur une
ou plusieurs cases
...ou Layout Manager 40
BorderLayout
Découpe en 5
régions: south, north,
east, west, center
Aucun :
.setBounds(x,y,h,l);
Conclusion 41
Java
facilite la construction
d’applications graphiques interactives
Les APIs sont bien conçues
Plusieurs niveaux de complexité
Problèmes
performances parfois
complexité parfois