Module M4207 applications informatiques - Lipn

publicité
Module M4207 applications informatiques
Rushed Kanawati
LIPN, CNRS UMR 7030
Université Paris 13
http://lipn.fr/∼kanawati
[email protected]
January 28, 2016
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
1 / 18
Plan
1
Introduction
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
2 / 18
Organisation du module
Organisation : 4 × 1.5 h cours, 8 × 3h TP.
Evaluation : Sur projet (en binômes) : Démonstration + Rapport +
Soutenance.
Contenu :
1
2
3
Initiation au développement d’interfaces graphiques en Java.
Prise en main du paquetage SNMP4j (SNMP tools)
Développement d’une simple application graphique d’interaction
avec un agent SNMP.
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
3 / 18
Introduction
Objectifs
Initiation à la programmation d’applications graphiques en Java
Programmation par événements
Programmation concurrente (threads)
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
4 / 18
Introduction
Interface graphique : WIMP
Interface graphique moderne : WIMP
WIMP = Window, Icon, Menu, Pointer
Une interface graphique : un ensemble de widgets dotées de
comportement et de rendu graphique.
Concevoir une interface = dessiner une interface + spécifier les
réactions aux interactions utilisateurs.
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
5 / 18
Introduction
Etapes de réalisation d’une interface graphique
1
Recenser les éléments actifs à utiliser (boutons, labels, menus, etc.)
2
Dessiner l’interface : en utilisants des éléments de structure et des
objets d’agencement.
3
Relier les éléments actifs et d’affichage aux objets de traitement.
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
6 / 18
Introduction
Widgets graphiques en Java
Deux types :
awt : Abstract Window Toolkit : un ensemble de composants
graphiques natifs (utilisant les ressources graphiques du système
hôte).
swing : un ensemble de composants graphiques 100% Java : le rendu
graphique ne dépende plus du système hôte.
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
7 / 18
Introduction
Widgets Swing
Deux types de widgets :
Les containers : widgets utilisés pour structurer l’interface.
Widgets actifs : boutons, listes, menus, etc.
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
8 / 18
Introduction
Les containers : La classe JFrame
Implante une fenêtre avec un barre de titre + un panneau interne
pour y agencer d’autres widgets.
Création : JFrame f = new JFrame(”titre”);
Quelques méthodes :
public void setContentPane(Container contentPane) : fixer le
panneau de fond de la fenêtre.
public JPanel getContentPane() : retourner le panneau de fond.
public Component add(Componenent c) : ajouter un composant
public Component remove(Componenent c) : retirer un composant
public void setVisible(boolean b) : contrôler la visibilité de la
fenêtre.
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
9 / 18
Introduction
Les containers : La classe JPanel
Un panneau de regroupement d’autres widgets (actifs ou de
structuration)
Création : JPanel p = new JPanel()
Quelques méthodes :
public Component add(Componenent c) : ajouter un composant
public Component remove(Componenent c) : retirer un composant
Agencement des widgets à l’intérieur en utilisant : LayoutManager.
Utilisation : public void setLayout(layoutManager)
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
10 / 18
Introduction
Layout Managers
BorderLayout (): Divise le container en 5 zones (Centre, Nord, Sud,
Est et Ouest)
FlowLayout (): Positionnement en flux selon la place disponible.
GridLayout (): Positionnement des composants dans une grille (avec
tailles des cases égales)
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
11 / 18
Introduction
Exemple : BorderLayout
Division du panneau en 5 zones : CENTER, NORTH, SOUTH,
EAST, WEST
Permet de placer un composant par zone.
Dimensionnement des widgets par rapport à leurs preferredSizes
et redimensionnement proportionnel:
NORTH et SOUTH étirés horizontalement
EAST et WEST étirés verticalement
CENTER étiré pur remplir le reste de l’espace
Utilisation : f.setLayout(new BorderLayout()); f.add(b,
BorderLayout.NORTH)
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
12 / 18
Introduction
BorderLayout : exemple
import java . awt .*;
import javax . swing .*;
public class A p p l i c a t i o n B o r d e r L a y o u t {
public static void main ( String [] args ) {
JFrame mainFrame = new JFrame ( " Exemple de BorderLayout " );
mainFrame . setLayout ( new BorderLayout ());
mainFrame . add ( new JButton ( " North " ) , BorderLayout . NORTH );
mainFrame . add ( new JButton ( " South " ) , BorderLayout . SOUTH );
mainFrame . add ( new JButton ( " Center " ) , BorderLayout . CENTER
mainFrame . s e t D e f a u l t C l o s e O p e r a t i o n ( JFrame . EXIT_ON_CLOSE );
mainFrame . setVisible ( true );
} }
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
13 / 18
Introduction
Widgets actifs
JButton : Un bouton qu’on peut activer (pousser).
JLabel : Une ligne d’affichage de texte ou d’image.
JTextField : Zone de saisie de texte (composé d’une seule ligne)
JTextArea : Zone multi-lignes de saisie de texte.
JCheckBox : ensemble de boutons de configuration.
JRadioButton : boutons de selections exclusives.
...
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
14 / 18
Introduction
Interface widget - programme
Un widget actif émet des événements prédéfinis en fonction de sa
nature.
Des objets Java peuvent s’abonner à l’écoute à ces événements afin
de réagir à leur occurrence.
Un objet écouteur doit implanter l’interface de traitement de
l’événement.
A la réception d’un événement, la méthode de traitement (spécifiée
dans l’interface de l’écoute) est automatiquement exécutée.
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
15 / 18
Introduction
Exemple : cas d’un JButton
Un JButton émet un événement Action quand il est cliqué
L’interface de traitement : ActionListener offre une méthode
actionPerformed(ActionEvent e)
L’objet ActionEvent décrit la source de l’événement et l’action ayant
lieu.
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
16 / 18
Introduction
Exemple : cas d’un JButton
class Traitant implements ActionListener {
public void actionPerformerd ( ActionEvenet e }{
...
}
}
Traitant obj = new Traitant ();
...
JButton button = new JButton ( " Button " );
button . add Actio nListe ner ( obj );
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
17 / 18
Introduction
Etude de cas: Application Montre Digitale
Développement d’une simple Montre Digitale
Possibilité de dériver différents modes d’affichage : texte ou
graphiques,
Affichage en mode 24h ou 12h.
R. Kanawati (LIPN)
Programmation graphique
January 28, 2016
18 / 18
Téléchargement