Vous êtes sur la page 1sur 35

AWT et Swing

JDBC (Java Data Base Connectivity)

POO - JAVA
CHAPITRE IHM (GUI) sous JAVA

Dr GAYE

Université Cheikh Anta DIOP (UCAD) de Dakar


École Supérieure Polytechnique (ESP)
Laboratoire Informatique, Réseaux et Télécommunications (LIRT)

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

AWT (Abstract Windowing Toolkit)


C’est la première bibliothèque pour rèaliser des interfaces-utilisateur
graphiques en Java.
AWT est une bibliothèque graphique originale et pratique, qui a
beaucoup contribuée au succès de Java, mais elle a deux
inconvénients : puisque ses composants sont censées exister sur
tous les environnements visés, leur nombre est forcément réduit ;
d’autre part, même réputés identiques, des composants appartenant
à des systèmes différents présentent malgré tout des différences de
fonctionnement qui finissent par limiter la portabilité des
programmes qui les utilisent.

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)

Interfaces graphiques : AWT & Swing

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)

Interfaces graphiques : AWT & Swing

Swing propose des composants


indépendants de la plateforme (écrits en Java) analogues à
ceux de AWT
JFrame,
JButton,
JTextField, etc.
avancés :
JTabbedPane (onglets),
JTree (arbres), etc.

7 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)

Interfaces graphiques : Swing

Le point de départ : JFrame et une application minimale.


JFrame cadre = new javax.swing.JFrame("Premiere
fenetre") ;
JPanel panneau = new JPanel() ;
panneau.setPreferredSize(new Dimension(250, 150)) ;//
panneau.setBackground(Color.YELLOW) ;
cadre.setContentPane(panneau) ;
cadre.setLocation(400, 300) ;
cadre.pack() ;
cadre.setVisible(true) ;
cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;

8 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)

Interfaces graphiques : Swing

Le point de départ : JFrame et une application minimale.

Figure – Première fenêtre Jframe

9 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)

AWT : hiérachie

Figure – Hiérachie des compsants AWT

10 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)

Interfaces graphiques : Composants

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)

Interfaces graphiques : Conteneurs

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)

Interfaces graphiques : Fenêtres

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)

Interfaces graphiques : exemple

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)

Interfaces graphiques : Fenêtres

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)

Interfaces graphiques : Fenêtres


Ajout Button
A l’affichage de la fenêtre, il faut remarquer que seule la couleur
verte (celle du bouton apparaît) et non celle de la fenêtre (couleur
jaune). En fait, le bouton occupe par défaut tout le ContenPane.
Ceci s ?explique du fait que chaque composant de plus haut niveau
dispose de ce que l ?on nomme un gestionnaire de mise en forme
(Layout Manager) qui permet de disposer les différents
composants dans le ContenPane.
Pour JFrame, le gestionnaire est la classe BorderLayout. Avec ce
gestionnaire, le composant occupe toute la fenêtre. Donc même si
vous rajouter un deuxième bouton à la fenêtre, il va se substituer
au premier et vous ne verrez donc que le dernier composant ajouté.
Pour visualiser les deux composants, il faut indiquer leur position
car BorderLayout place les composants au quatre points
Cardinaux (North, West, East, South) et au centre (Center).
16 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)

Interfaces graphiques : exemple

public class Test extends JFrame{


public JPanel p ;
public JTextField texte ;
public JButton bouton1, bouton2 ;
public Test() {
super("Calcul de factoriel") ;
p = new JPanel() ; this.add(p) ;
p.add( new JLabel("Factoriel de ") ) ;
p.add( texte = new JTextField(20) ) ;
p.add( bouton1 = new JButton("Calculer") ) ;
p.add( bouton2 = new JButton("Terminer") ) ;
this.pack() ;
}
public static void main(String[] args){
Test f = new Test() ;
f.show() ;
}
}

17 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)

Interfaces graphiques : exemple

Figure – Interfaces graphiques : exemple

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

Les objets d’un évènement


Un événement fait interagir trois objets :
L’objet source de l’événement (bouton cliqué)
Un objet (classe ActionEvent) mémorisant l’événement (date,
source, ?)
Un écouteur d’événement (listener) capable de traiter
l’événement (s’enregistre en implémentant l’interface
correspondante)

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

Exemple : détecter les clics de la souris


class CoordSouris implements MouseListener {
public void mousePressed(MouseEvent e) {
System.out.println("Clic en (" + e.getX() + ", " + e.getY() +
")") ;
}
public void mouseReleased(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}

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

Figure – Pilotes JDBC


28 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)

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

Figure – JDBC - fonctionnement


30 / 35
AWT et Swing
JDBC (Java Data Base Connectivity)

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

Pilote - Les requêtes en JDBC


final String PERSONNES = "SELECT nom,prenom,age FROM personne ORDER BY
age" ;
public void listPersons() throws SQLException {
Connection conn = null ;
try{
// create new connection and statement
conn = newConnection() ;
Statement st = conn.createStatement() ;
ResultSet rs = st.executeQuery(PERSONNES) ;
while (rs.next()) {
System.out.printf("%s |%s | %d", rs.getString(1),
rs.getString("prenom"), rs.getInt(3)) ;
}
}
finally {
// close result, statement and connection
if (conn != null) conn.close() ;
}
}

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

Vous aimerez peut-être aussi