Académique Documents
Professionnel Documents
Culture Documents
POO - JAVA
CHAPITRE IHM (GUI) sous JAVA
Dr GAYE
4 juillet 2019
1 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
OutLine
AWT et Swing
Applet
2 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
AWT
3 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
AWT
Cadres et bôtes de dialogue (Frame, Dialog)
Les classes java.awt.Frame (cadre) et java.awt.Dialog (bôte de
dialogue) sont des sous-classes de Window. Les instances de ces
deux classes sont des objets bien connus de quiconque a vu on
ordinateur (en marche), car de nos jours on les rencontre dans les
interfaces graphiques de toutes les applications.
Un cadre
Un cadre est une fenêtre munie d’un bord, un bandeau de titre et,
éventuellement, une barre de menus.
Du point de vue de l’utilisateur, le cadre d’une application remplit
au moins les trois fonctions suivantes :
le cadre est l’outil standard pour modifier la taille et la forme
de l’interface,
le cadre porte la barre des menus de l’application,
4 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Swing
Swing ? ? ?
Swing est venu après AWT et, quand il est arrivé, tous les noms
intéressants étaient déjà pris : Component, Frame, Dialog, Button,
Panel, etc. Plutôt que d’inventer des noms entièrement nouveaux,
forcément peu significatifs, les concepteurs de Swing ont préféré
nommer les classes de Swing par les mêmes noms que AWT, avec
un signe distinctif constant, un J en début du nom : JComponent,
JFrame, JDialog, JButton, JPanel, etc.
Attention
l’oubli de ce J initial change le sens de ce qu’on écrit, mais d’une
manière que le compilateur ne peut pas toujours signaler comme
une erreur ; cela introduit des dysfonctionnements plus ou moins
importants dans les programmes.
5 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
AWT
permet de créer des fenêtres (Frame)
d’utiliser :
des boutons de commandes (Button),
des zones de texte (TextField),
des zones de liste, de dessiner, etc.
l’apparence de certains composants dépend de la plateforme
d’exécution (utilise des objets de l’environnement..
d’exécution).
6 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
7 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
8 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
9 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
AWT : hiérachie
10 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Composants
classe java.awt.Component
Comportement d’un objet Component :
se dessiner (paint)
définir / obtenir taille et position du composant (setSize,
setMinimumSize, etc.)
définir / obtenir propriétés graphiques (setBackground,
setForeground, setFont, etc.)
être source d ?évènements
11 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Conteneurs
classe java.awt.Container
Espaces graphiques destinés à recevoir plusieurs composants
(boutons, zones de texte,
autres conteneurs : Frame, Panel, Dialog, Applet ...
La mise en page d’un conteneur est confiée à un gestionnaire
qui se charge du placement des composants ajoutés par la
méthode add().
Les panneaux (Panel) doivent être placés dans un espace
existant (autre conteneur, navigateur Web).
12 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Fenêtres
java.awt.Window : sous-classe de Container
Possibilité d’être visible sans nécessiter d’être incluse dans un
autre composant.
Les classes java.awt.Dialog (boîtes de dialogue) et
java.awt.Frame (cadres) sont des sous-classes de Window
Cadre : fenêtre avec bord, titre et, éventuellement menu
Généralement, une application contient un seul cadre ; il est
utilisé pour modifier la taille et la forme de l’interface.
Boîte de dialogue : fenêtre utilisée pour afficher un message
13 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Ajout Button
public class Test extends JFrame{
public Test(String titre){
this.setTitle(titre) ;
this.setSize (250,200) ;
contenu.setBackground (Color.yellow) ;
JButton bouton = new JButton ("Boutton Test") ;
bouton.setBackground (Color.green) ;
contenu.add (bouton) ;
}
public static void main(String[] args){
new Test("Ma Fenêtre Swing").setVisible (true) ;
}
}
14 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Ajout Button
La création d’un bouton nécessite l ?usage d ?un constructeur
de la classe JButton. Ici, on utilise le constructeur JButton
(String intitule)
JButton bouton = new JButton ("Copier") ;
On donne une couleur au bouton avec la méthode
setBackground (Color couleur) appliqué à l ?objet bouton.
bouton.setBackground (Color.green) ;
Et on ajoute le composant à la partie contenu de la fenêtre
native (le ContenPane) en utilisant la méthode add
(Component comp)
contenu.add (bouton) ;
15 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
17 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
18 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Evènements
C’est quoi
Les composants sont visible sur un écran, il est naturellement
prédestiné à devenir la cible d’actions faites par l’utilisateur à l’aide
de la souris, du clavier ou de tout autre organe de saisie disponible.
Au moment où elle est détectée par l’ordinateur, une action de
l’utilisateur provoque la création par la machine Java, d’un
événement.
19 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Evènements
Modèle des évènements de Java
Figure – Enènements
20 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Evènements
21 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Evènements
types d’événements
Les objets qui demandent à recevoir les notifications des
événements d’un certain type doivent donc possèder les méthodes
correspondantes ; on garantit cela en imposant que ces objets soient
des implémentations d’interfaces, nommées souvent XxxListener,
caractérise le type d’évènement considéré MouseListener,
WindowListener, ActionListener, etc.
22 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Evènements
types d’événements
ActionListener : actions (clic sur un bouton, choix dans une
liste, etc.) sur un composant. L’interface contient une seule
méthode appelée lorsqu’une action est effectuée void
actionPerformed(ActionEvent e)
MouseListener : événements souris (clics)
MouseMotionListener : mouvements de la souris
KeyListener : événements clavier (touche pressée/relâchée)
WindowListener : actions sur une fenêtre
23 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Evènements
Exemple : détecter les clics de la souris
import javax.swing.* ;
import java.awt.Color ;
import java.awt.event.* ;
public class CadreClique extends JFrame {
CadreClique() {
super("Un cadre sensible") ;
setDefaultCloseOperation(EXIT_ON_CLOSE) ;
JPanel panneau = new JPanel() ;
panneau.setBackground(Color.WHITE) ;
CoordSouris coord = new CoordSouris() ;
panneau.addMouseListener(coord) ;
getContentPane().add(panneau) ;
setSize(500, 500) ;
setVisible(true) ;
}
public static void main(String[] args) {
new CadreClique() ;
}
} 24 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Evènements
25 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
JDBC
API JDBC
JDBC, Java Data Base Connectivity est un ensemble de
classes (API-Application Programming Interface) permettant
de se connecter à une base de données relationnelle en
utilisant des requêtes SQL ou des procédures stockées.
L’API JDBC a été développée de manière à pouvoir se
connecter à n’importe quelle base de données avec la même
syntaxe ; cette API est dite indépendante du SGBD utilisé.
Les classes JDBC font partie du package java.sql et javax.sql
26 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
JDBC
Pilote
Pilote de bases de données ou driver JDBC
Un pilote ou driver JDBC est un "logiciel" qui permet de
convertir les requêtes JDBC en requêtes spécifiques auprès de
la base de données.
Ce "logiciel" est en fait une implémentation de l’interface
Driver, du package java.sql.
27 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
JDBC
Pilote
JDBC
Pilote
JDBC Driver Manager : Gestionnaire de drivers permettant à
chaque application de charger le(s) driver(s) dont il a besoin.
Driver JDBC : gère les détails de communication avec un type
de SGBD.
JDBC-ODBC : driver générique pour toutes les sources
accessibles via ODBC (Open DataBase Connectivity. interface
Microsoft permettant la communication entre des clients bases
de données fonctionnant sous Windows et les SGBD du
marché).
Un driver par SGBD (Oracle, MySQL, ...)
29 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
JDBC
Pilote - fonctionnement
JDBC
Pilote - déclaration
Méthode de chargement explicite d’un pilote :
private String driverName = "com.mysql.jdbc.Driver" ;
void chargerDriver() throws ClassNotFoundException {
Class.forName(driverName) ;
}
Pilote - déclaration
L’appel à forName déclenche un chargement dynamique du
pilote.
Un programme peut utiliser plusieurs pilotes, un pour chaque
base de données.
Le pilote doit être accessible à partir de la variable
d’environnement CLASSPATH .
Le chargement explicite est inutile à partir de JDBC 4. 31 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
JDBC
Pilote - connexion à la BD
private String url = "jdbc :mysql ://localhost/bdtest" ;
private String user = "root" ;
private String password = "root" ;
Connection newConnection() throws SQLException {
Connection conn = DriverManager.getConnection(url, user,
password) ;
return conn ;
}
32 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
JDBC
33 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
JDBC
L’interface java.sql.ResultSet
Accès aux valeurs :
TYPE getTYPE( int numeroDeColonne ) ;
TYPE getTYPE( String nomDeColonne ) ;
boolean next() ;
Le type peut être :
Byte ; Boolean ; AsciiStream ; Short ; String ; UnicodeStream ; Int ;
Bytes ; BinaryStream ; Long ; Date ; Object ; Float ; Time ;
BigDecimal ; TimeStamp
34 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)
Références
Bibliographie
Cours Pr Moussa LO, Coordinateur de l’UVS
Henri Garreta, Le langage Java
35 / 35