Java Graphic Programming
La classe Graphics contient les outils nécessaires pour dessiner
Les instances nécessaires sont fournies par le système d'exploitation
A l'exception des lignes, toutes les formes peuvent être dessinées vides (méthode
drawXXX) ou pleines (fillXXX).
Quelques méthodes: drawRect(x, y, largeur, hauteur), drawRoundRect(x, y, largeur,
hauteur, hor_arr,ver_arr)
1
Java Graphic Programming
Exemple:
package praphic;
import [Link].*;
import [Link];
public class DisplayGraphics extends Canvas{
public void paint(Graphics g) {
[Link]("Hello",40,40); setBackground([Link]);
[Link](130, 30,100, 80); [Link](30,130,50, 60);
setForeground([Link]); [Link](130,130,50, 60);
[Link](30, 200, 40,50,90,60); [Link](30, 130, 40,50,180,40);
}
2
Java Graphic Programming
public static void main(String[] args) {
DisplayGraphics m=new DisplayGraphics();
JFrame f=new JFrame();
[Link](m); [Link](400,400);
//[Link](null); [Link](true);
} }
3
Note:
A Canvas component represents a blank rectangular area of the screen onto which the
application can draw or from which the application can trap input events from the user.
An application must subclass the Canvas class in order to get useful functionality such as
creating a custom component. The paint method must be overridden in order to perform
custom graphics on the canvas.
Un composant Canvas représente une zone rectangulaire vide de l'écran sur laquelle
l'application peut dessiner ou à partir de laquelle l'application peut récupérer les
événements d'entrée de l'utilisateur.
Une application doit sous-classer la classe Canvas afin d'obtenir des fonctionnalités utiles
telles que la création d'un composant personnalisé. La méthode paint doit être remplacée
afin d'effectuer des graphiques personnalisés sur la toile.
4
Les éléments d'interfaces graphiques de l'AWT
AWT (Abstract Windows Toolkit)
utilise le système graphique de la plateforme d'exécution
La classe Container, qui hérite de Component est capable de contenir d'autres objets
graphiques (tout objet dérivant de Component).
Pour utiliser un composant
il faut créer un nouvel objet représentant le composant
l'ajouter à un de type conteneur qui existe avec la méthode add().
5
6
Les éléments d'interfaces graphiques de l'AWT
Exemple:
import [Link].*;
public class Exemple1 {
public static void main(String[] args) {
Frame frame = new Frame("exemple");
Button button = new Button("clic clic");
Label label = new Label("un petit texte");
Panel pane = new Panel();
[Link](button);
[Link](label);
[Link](pane, [Link]);
[Link]();
}
}
7
Les éléments d'interfaces graphiques de l'AWT
Les panneaux
sont des conteneurs qui permettent de rassembler des composants et de les positionner
grâce à un gestionnaire de présentation.
L'ajout d'un composant au panel se fait grâce à la méthode add().
Voire exemple:
Combobox
Cette classe ne possède qu'un seul constructeur qui ne possède pas de paramètres
Les méthodes add() et addItem() permettent d'ajouter des éléments à la combobox
Voire exemple: [Link]
8
Les éléments d'interfaces graphiques de l'AWT
Listes déroulantes
Dès que le nombre d’options augmente, les boutons radio ne conviennent plus, car ils
occupent trop d’espace à l’écran. Vous pouvez, dans ce cas, utiliser une liste déroulante.
Lorsque l’utilisateur clique sur le champ, une liste de choix se déroule ; il peut ainsi faire
une sélection.
Il existe plusieurs constructeurs :
9
Les éléments d'interfaces graphiques de l'AWT
Listes déroulantes :( on peut appeler, Listes déroulantes ):
List list = new List(5,true);
[Link]("1ère année");
[Link]("2ème année");
[Link]("3ème année");
[Link]("4ème année");
[Link]("5ème année")
Cases à cocher
Si vous souhaitez recueillir une réponse qui se limite à une entrée "oui" ou "non", utilisez
une case à cocher. Ce type de composant s’accompagne d’un intitulé qui permet de les
identifier. L’utilisateur clique à l’intérieur de la case pour la cocher et fait de même pour la
désactiver.
Voire exemple: [Link]
10
Les éléments d'interfaces graphiques de l'AWT
Cases à cocher
11
Les éléments d'interfaces graphiques de l'AWT
TextComponent :
Est la classe des mères des classes qui permettent l'édition de texte : TextArea et
TextField.
Elle définit un certain nombre de méthodes dont ces classes héritent.
12
Les éléments d'interfaces graphiques de l'AWT
TextComponent :
13
Les éléments d'interfaces graphiques de l'AWT
champs de texte: TextField
Un champ de texte n’accepte qu’une ligne de texte.
Label nomEt = new Label("nom Etudiant");
TextField nom= new TextField(30);
[Link](nomEt);
[Link](nom);
14
Les éléments d'interfaces graphiques de l'AWT
champs de texte: TextField (Next) :
15
Les éléments d'interfaces graphiques de l'AWT
zones de texte multilignes: TextArea
les zones de texte peuvent en accueillir plusieurs lignes.
16
Java Graphic Programming
Les conteneurs
Ils héritent de la classe Container
peuvent contenir d'autres objets graphiques
17
Java Graphic Programming
La classe Canvas
C'est un composant sans fonction particulière
il est utile pour créer des composants graphiques personnalisés
Canvas class is a part of Java AWT. Canvas is a blank rectangular area where the user can
draw or trap input from the user. Canvas class inherits the Component class.
La classe Canvas fait partie de Java AWT. Le canevas est une zone rectangulaire vierge dans
laquelle l'utilisateur peut dessiner ou capturer les entrées de l'utilisateur. La classe Canvas
hérite de la classe Component.
18
Java Graphic Programming
La classe Canvas (Next):
Constructor of the Canvas class are :
Canvas(): Creates a new blank canvas.
Canvas(GraphicsConfiguration c): Creates a new canvas with a specified graphics
configuration.
19
Java Graphic Programming
import [Link].*; // set Font }
import [Link].*; [Link](new
class canvas extends JFrame { Font("Bold", 1, 20)); // Main Method
public static void
// constructor // draw a string main(String args[])
canvas() [Link]("This is a {
{ canvas", 100, 100); canvas c = new canvas();
super("canvas"); } }
}; }
// create a empty canvas
Canvas c = new Canvas() { // set background
// paint the canvas [Link]([Link]);
public void paint(Graphics
g) add(c);
{ setSize(400, 300);
// set color to red show();
[Link]([Link]);
20
Java Graphic Programming
La classe Component:
21
Java Graphic Programming
conteneur Frame :
En Java, une fenêtre de haut niveau — c’est-à-dire une fenêtre qui n’est pas contenue dans
une autre fenêtre — est appelée frame (cadre ou fenêtre d’encadrement).
La version Swing de cette classe est baptisée Jframe
Les éléments de décoration (boutons, barre de titre, icônes, etc.) ne sont pas dessinés par
Swing, mais par le système de fenêtrage de l’utilisateur.
22
Java Graphic Programming
class SimpleFrame extends
import [Link].*; JFrame
/** {
* @version 1.32 2007-06-12 public SimpleFrame()
* @author Cay Horstmann {
*/ setSize(DEFAULT_WIDTH,
public class SimpleFrameTest DEFAULT_HEIGHT);
{ }
public static void main(String[] args) public static final int
{ DEFAULT_WIDTH = 300;
SimpleFrame frame = new SimpleFrame(); public static final int
[Link]("Gestion de Stocks"); DEFAULT_HEIGHT = 200;
}
[Link]([Link]
T_ON_CLOSE);
[Link](true);
}
}
23
Java Graphic Programming
Le conteneur Dialog :
La classe Dialog hérite de la classe Window.
Un objet de la classe Dialog doit dépendre d'un objet de la classe Frame.
Une boîte de dialogue doit dérivée de la Classe Dialog de package [Link].
Boîtes de dialogue d’options
Swing propose un ensemble de boîtes de dialogue standard prêtes à l’emploi, qui
permettent de demander à l’utilisateur de fournir une information. La classe JOptionPane
propose quatre méthodes static pour afficher ces boîtes de dialogue :
24
Java Graphic Programming
Boîtes de dialogue d’options (Next)
Méthode Sens
showMessageDialo Affiche un message et attend que l’utilisateur clique sur OK.
g
showConfirmDialog Affiche un message et reçoit une confirmation de l’utilisateur
(comme OK/Annuler).
showOptionDialog Affiche un message et récupère l’option choisie parmi plusieurs.
showInputDialog Affiche un message et récupère une ligne entrée par l’utilisateur.
25
Java Graphic Programming
import [Link].*;
public class Dialogue {
public static void main(String[] args) {
[Link](null, "Bienvenue...");
[Link](null, "Voulez-vous continuer ?");
[Link](null, "Votre nom et prénom :");
}
}
26
Java Graphic Programming
import [Link].*;
public class Dialogue {
public static void main(String[] args) {
JTextField utilisateur = new JTextField();
JPasswordField passe = new JPasswordField();
[Link](null,
new Object[] {"Votre nom :", utilisateur, "Mot de passe :", passe},
"Connexion",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE, null, null, null);
}
}
27
Java Graphic Programming
Les menus
Il faut insérer les menus dans des objets de la classe Frame
Algorithme:
Il faut créer une barre de menu et l'affecter à la fenêtre d'encadrement.
ensuite créer les entrées de chaque menu et les rattacher à la barre.
Ajouter en suite les sous menues
28
• import [Link].*; • Menu gestEt= new Menu(" Gestion Etudiant");
• [Link](gestEt);
• class ETudiantframe extends Frame • CheckboxMenuItem creerET = new
• { CheckboxMenuItem(" Créer Etuinat ");
• CheckboxMenuItem suppriET = new
• ETudiantframe(String nomF) CheckboxMenuItem(" Supprimer Etuinat ");
• { • [Link](creerET);
• super(nomF); • [Link](suppriET);
• setSize(500,500); • //show();
• [Link](70, 40); • [Link](true);
• }
• MenuBar scolarité = new MenuBar();
• }
• setMenuBar(scolarité);
• public class GestionDeScolarité
• Menu fichier = new Menu("File"); • {
• scolarité.add(fichier); • public static void main (String[] args)
• [Link](new MenuItem("Gestion • {
Module")); • new ETudiantframe("Application pour Scolarité");
• [Link](new MenuItem("Gestion • }
Examen")); • }
29
• Menu gestEt= new Menu(" Gestion
Etudiant");
• [Link](gestEt);
• CheckboxMenuItem creerET = new
CheckboxMenuItem(" Créer Etuinat ");
• CheckboxMenuItem suppriET = new
CheckboxMenuItem(" Supprimer Etuinat ");
• [Link](creerET);
• [Link](suppriET);
• //show();
• [Link](true);
• }
• }
• public class GestionDeScolarité
• {
• public static void main (String[] args)
• {
• new ETudiantframe("Application pour
Scolarité");
• }
• }
30
Java Graphic Programming
Le dimensionnement des composants
il est automatique grâce au LayoutManager.
il faut redéfinir la méthode getPreferedSize() [fonction du Layout Manager]
En fonction du Layout Manager, le composant pourra ou non imposer sa taille.
Trois méthodes de la classe Component permettent de positionner des composants :
setBounds(int x, int y, int largeur, int hauteur)
setLocation(int x , int y)
setSize(int largeur, int hauteur)
31
Java Graphic Programming
public class ButtonExample {
import [Link].*;
public static void main(String[]
import [Link].*;
args) {
JFrame f=new JFrame("Button
class MonBouton extends Button
Example");
{
MonBouton b=new
MonBouton(String s)
MonBouton("Click Here");
{super(s);
[Link](b);
setBounds(80,100,100,100);
[Link](400,400);
}
[Link](null);
[Link](true);
}
}
}
32
Java Graphic Programming
Le positionnement des composants (Next)
L’emplacement est déterminé de façon automatique
On peut influencer cette mise en page (setLayout()) en utilisant un gestionnaire de mise
en page (Layout Manager)
Par défaut c'est la classe FlowLayout qui est utilisée pour la classe Panel
Par défaut c’est la classe BorderLayout pour Frame et Dialog.
Exemple:
[Link]( new GridLayout(5,5));
getInsets() : Permet de créer un espace entre les composants et le bord de leur
conteneur.
33
Java Graphic Programming
Le positionnement des composants (Next)
l'aménagement des composants graphiques est délégué aux layout manager
en cas de redimensionnement de la fenêtre, les contrôles sont automatiquement
agrandis ou réduits indépendance vis à vis des plateformes.
La mise en page par flot (FlowLayout)
place les composants ligne par ligne de gauche à droite, chaque ligne est centrée par
défaut
34
Java Graphic Programming
import [Link].*;
public class ExempleDeDesposition extends
Frame {
ExempleDeDesposition() {
setTitle(" La mise en page par flot FlowLayout
");
setSize(300, 150);
setLayout(new FlowLayout());
add(new Button("Bouton N° 1"));
add(new Button("Bouton N° 2"));
add(new Button("Bouton N° 3"));
add(new Button("Bouton N° 4"));
add(new Button("Bouton N° 5"));
show();
}
public static void main(String[] args) {
new ExempleDeDesposition();
}} 35
Java Graphic Programming
La mise en page bordure (BorderLayout)
La surface est découpée en cinq zones : North, South, East, West, Center.
BorderLayout consacre tout l'espace du conteneur aux composants.
36
Java Graphic Programming
import [Link].*;
public class ExempleDeDesposition1 extends Frame {
public ExempleDeDesposition1() {
setTitle("La mise en page bordure BorderLayout");
setSize(300, 150);
setLayout(new BorderLayout(20,4));
add("North", new Button(" bouton North "));
add("South", new Button(" bouton South "));
add("West", new Button(" bouton West "));
add("East", new Button(" bouton East "));
add("Center", new Button(" bouton Center "));
show();
}
public static void main(String[] args) {
new ExempleDeDesposition1();
}
} 37
Java Graphic Programming
La mise en page de type carte (CardLayout)
aide à construire des boîtes de dialogue composées de plusieurs onglets.
Lors de l'insertion d'un onglet, un nom doit lui être attribué.
possède deux constructeurs :
38
Java Graphic Programming
La mise en page GridLayout
Ce Layout Manager établit un réseau de cellules identiques qui forment une sorte de
quadrillage invisible
Les composants sont organisés en lignes et en colonnes.
Les éléments insérés dans la grille ont tous la même taille.
Les cellules du quadrillage se remplissent de droite à gauche ou de haut en bas.
Il existe plusieurs constructeurs
39
Java Graphic Programming
import [Link].*;
public class ExempleDeDesposition extends Frame {
public ExempleDeDesposition() {
super();
setTitle(" La mise en page GridLayout ");
setSize(300, 150);
setLayout(new GridLayout(3, 3,4,2));
for (int i=0;i<9;i++)
add(new Button("Button Numero "+[Link](i)));
show();
}
public static void main(String[] args) {
new ExempleDeDesposition();
}
}
40
Java Graphic Programming
La mise en page GridBagLayout
est le plus riche en fonctionnalités
le conteneur est divisé en cellules égales
Un composant peut occuper plusieurs cellules de la grille
il est possible de faire une distribution dans des cellules distinctes
Un objet de la classe GridBagConstraints permet de donner les indications de
positionnement et de dimension à l'objet GridBagLayout.
Les lignes et les colonnes prennent naissance au moment ou les contrôles sont ajoutés
variables d'instances pour manipuler l'objet GridBagLayout Constrainst
41
Java Graphic Programming
42
Java Graphic Programming
Gestion des événements
est d’une importance capitale pour les programmes ayant une interface
[Link] classe mère de tous les objets événement
Gestion d’événement par AWT
43
Java Graphic Programming
44