+ All Categories
Home > Documents > Cours d’introduction à Java

Cours d’introduction à Java

Date post: 06-Jan-2016
Category:
Upload: bunny
View: 36 times
Download: 3 times
Share this document with a friend
Description:
Cours d’introduction à Java. Christophe Vaudry IUT - Cycle IRISM Année 2000-2001. Cours d’introduction à Java (5) : l’Abstract Windowing Toolkit(1ère partie). Christophe Vaudry IUT - Cycle IRISM Année 2000-2001. Conteneurs et composants (1) : généralités. - PowerPoint PPT Presentation
Popular Tags:
28
Cours d’introduction à Cours d’introduction à Java Java Christophe Vaudry Christophe Vaudry IUT - Cycle IRISM IUT - Cycle IRISM Année 2000-2001 Année 2000-2001
Transcript
Page 1: Cours d’introduction à Java

Cours d’introduction àCours d’introduction à JavaJava

Christophe VaudryChristophe Vaudry

IUT - Cycle IRISMIUT - Cycle IRISM

Année 2000-2001Année 2000-2001

Page 2: Cours d’introduction à Java

Cours d’introduction àCours d’introduction à Java (5) : Java (5) : l’Abstract Windowing Toolkit(1ère partie) l’Abstract Windowing Toolkit(1ère partie)

Christophe VaudryChristophe Vaudry

IUT - Cycle IRISMIUT - Cycle IRISM

Année 2000-2001Année 2000-2001

Page 3: Cours d’introduction à Java

Conteneurs et composants (1) : généralités

Une interface graphique en Java est un assemblage Une interface graphique en Java est un assemblage conteneurs (conteneurs (Container) et de composants () et de composants (Component).).

Un composant est une partie "visible" de l'interface Un composant est une partie "visible" de l'interface utilisateur Java.utilisateur Java. C’est une sous-classes de la classe abstraite C’est une sous-classes de la classe abstraite

java.awt.Component.. ExempleExemple : les boutons, les zones de textes ou de dessin, : les boutons, les zones de textes ou de dessin,

etc.etc. Un conteneur est un espace dans lequel on peut Un conteneur est un espace dans lequel on peut

positionner plusieurs composants.positionner plusieurs composants. Sous-classe de la classe Sous-classe de la classe java.awt.Container La classe La classe Container est elle-même une sous-classe de la est elle-même une sous-classe de la

classe classe Component Par exemple les fenêtres, les applets, etc.

Component

Object(from lang)

Container

Page 4: Cours d’introduction à Java

Conteneurs et composants (2) : hiérarchie

Object(from lang)

Component

Container

Panel

Applet(from applet)

FileDialog

Dialog Frame

Window

Button

Canvas

Checkbox

Choice

Label

TextComponent

Scrollbar List

TextArea TextField

Hiérarchie d’héritagedes principaux éléments des interfaces graphiques en Java

Page 5: Cours d’introduction à Java

Conteneurs et composants (3) : Frame et Panel

Les deux conteneurs les plus courants sont Les deux conteneurs les plus courants sont Frame et et Panel.. Un Un Frame présente une fenêtre de haut niveau avec un titre, une présente une fenêtre de haut niveau avec un titre, une

bordure et des angles de redimensionnement.bordure et des angles de redimensionnement. Un Un Frame est doté d'un est doté d'un BorderLayout par défaut. par défaut. La plupart des applications utilisent au moins un La plupart des applications utilisent au moins un Frame comme point comme point

de départ de leur interface graphique. de départ de leur interface graphique. Un Un Panel n'a pas une apparence propre et ne peut pas être utilisé n'a pas une apparence propre et ne peut pas être utilisé

comme fenêtre autonome. comme fenêtre autonome. Un Un Panel est doté d'un est doté d'un FlowLayout par défaut. par défaut. Les Les Panel sont créés et ajoutés aux autres conteneurs de la même sont créés et ajoutés aux autres conteneurs de la même

façon que les composants tels que les boutons.façon que les composants tels que les boutons.– Les Les Panel peuvent ensuite redéfinir une présentation qui leur soit propre peuvent ensuite redéfinir une présentation qui leur soit propre

pour contenir eux-mêmes d'autres composants.pour contenir eux-mêmes d'autres composants.

Page 6: Cours d’introduction à Java

Conteneurs et composants (4) : utilisation

On ajoute un composant dans un conteneur, avec la méthode On ajoute un composant dans un conteneur, avec la méthode add() : () : Panel p = new Panel();

Button b = new Button();

p.add(b); De manière similaire, un composant est retirer de son conteneur De manière similaire, un composant est retirer de son conteneur

par la méthode par la méthode remove() :() :p..remove((b););

Un composant a (notamment) :Un composant a (notamment) : une taille préférée que l’on obtient avec une taille préférée que l’on obtient avec getPreferredSize()() une taille minimum que l’on obtient avec une taille minimum que l’on obtient avec getMinimunSize()() une taille maximum que l’on obtient avec une taille maximum que l’on obtient avec getMaximunSize()()

Page 7: Cours d’introduction à Java

Gestionnaire de présentation (1)

A chaque conteneur est associé un gestionnaire de présentation A chaque conteneur est associé un gestionnaire de présentation ((layout manager) )

Le gestionnaire de présentation gère le positionnement et le Le gestionnaire de présentation gère le positionnement et le (re)dimensionnement des composants d’un conteneur. (re)dimensionnement des composants d’un conteneur.

Le ré-agencement des composants dans un conteneur a lieu lors Le ré-agencement des composants dans un conteneur a lieu lors de :de : la modification de sa taille,la modification de sa taille, le changement de la taille ou le déplacement d'un des composants.le changement de la taille ou le déplacement d'un des composants. l'ajout, l'affichage, la suppression ou le masquage d'un composant.l'ajout, l'affichage, la suppression ou le masquage d'un composant.

Page 8: Cours d’introduction à Java

Gestionnaire de présentation (2)

Les principaux gestionnaire de présentation de l'AWT sont : Les principaux gestionnaire de présentation de l'AWT sont : FlowLayout BorderLayout GridLayout CardLayout GridBagLayout

Tout conteneur possède un gestionnaire de présentation par Tout conteneur possède un gestionnaire de présentation par défaut.défaut. Tout instance de Tout instance de Container référence une instance de référence une instance de LayoutManager.. Il est possible d'en changer grâce à Il est possible d'en changer grâce à setLayout()()..

Les gestionnaires de présentation par défaut sont :Les gestionnaires de présentation par défaut sont : Le Le BorderLayout pour pour Window et ses descendants (et ses descendants (Frame, , Dialog, etc.), etc.) Le Le FlowLayout pour pour Panel et ses descendants ( et ses descendants (Applet, etc.) , etc.)

Page 9: Cours d’introduction à Java

Premier exemple : ExempleIHMimport java.awt.*;

public class ExempleIHM extends Frame{ private Button b1; private Button b2; public static void main (String args []) { ExempleIHM that = new ExempleIHM (); that.pack (); //change taille du Frame pour englober boutons that.setVisible (true) ; } public ExempleIHM() { super("Notre exemple d'IHM"); // lance le constructeur de la super classe, ici Frame setLayout (new FlowLayout ()); // nouveau gestionnaire pres. b1 = new Button ("Appuyer"); b2 = new Button ("Ne pas appuyer"); add (b1); add (b2); }}

Page 10: Cours d’introduction à Java

Deuxième exemple : AutreIHM (variante du premier exemple)

import java.awt.*;;

public class AutreIHM{ public Frame f; private Button b1; private Button b2; public static void main (String args []) { AutreIHM that = new AutreIHM (); that.f.pack(); that.f.setVisible (true) ; } public AutreIHM() { f = new Frame("Notre exemple d'IHM"); f.setLayout(new FlowLayout()); b1 = new Button ("Appuyer"); b2 = new Button ("Ne pas appuyer"); f.add(b1); f.add(b2); }}

Page 11: Cours d’introduction à Java

Plusieurs gestionnaires de présentation

Java fournit plusieurs gestionnaires de présentation, c'est-à-dire Java fournit plusieurs gestionnaires de présentation, c'est-à-dire plusieurs politiques de positionnement et de redimensionnement plusieurs politiques de positionnement et de redimensionnement des composants dans un conteneur.des composants dans un conteneur.

Les gestionnaires de présentation proposés dans java.awt sont :Les gestionnaires de présentation proposés dans java.awt sont : FlowLayout BorderLayout GridLayout CardLayout GridBagLayout

Remarque Remarque Une fois installé, un gestionnaire fonctionne "tout seul" en Une fois installé, un gestionnaire fonctionne "tout seul" en

interagissant avec le conteneur. interagissant avec le conteneur. Il est donc généralement inutile de garder une référence sur un Il est donc généralement inutile de garder une référence sur un

gestionnaire de présentation gestionnaire de présentation – d’où les ‘ d’où les ‘ setLayout(new FlowLayout() );setLayout(new FlowLayout() ); ’ par exemple ’ par exemple– exceptionexception pour pour CardLayout et et GridBagLayout

Page 12: Cours d’introduction à Java

FlowLayout (1) : généralités

Le FlowLayout est le plus simple des managers de l'AWT Le FlowLayout est le plus simple des managers de l'AWT Gestionnaire de présentation utilisé par défaut dans les Gestionnaire de présentation utilisé par défaut dans les Panel si si

aucun aucun LayoutManager n'est spécifié. n'est spécifié. Un Un FlowLayout peut spécifier : peut spécifier :

une justification à gauche, à droite ou centrée,une justification à gauche, à droite ou centrée, un espacement horizontal ou vertical entre deux composants.un espacement horizontal ou vertical entre deux composants. Par défaut, les composants sont centrés à l'intérieur de la zone qui Par défaut, les composants sont centrés à l'intérieur de la zone qui

leur est allouée.leur est allouée.

Page 13: Cours d’introduction à Java

FlowLayout (2) : stratégie de disposition

La stratégie de disposition du La stratégie de disposition du FlowLayout est la suivante : est la suivante : Respecter la Respecter la taille préféréetaille préférée de tous les composants contenus. de tous les composants contenus. Disposer autant de composants que l'on peut en faire tenir Disposer autant de composants que l'on peut en faire tenir

horizontalement à l'intérieur de l'objet horizontalement à l'intérieur de l'objet Container.. Commencer une nouvelle rangée de composants si on ne peut pas les Commencer une nouvelle rangée de composants si on ne peut pas les

faire tenir sur une seule rangée.faire tenir sur une seule rangée. Si tous les composants ne peuvent pas tenir dans l'objet Si tous les composants ne peuvent pas tenir dans l'objet Container, ce , ce

n'est pas géré (c'est-à-dire que les composants peuvent ne pas n'est pas géré (c'est-à-dire que les composants peuvent ne pas apparaître).apparaître).

Page 14: Cours d’introduction à Java

FlowLayout (3) : illustration du comportement

OK Ouvrir

Fermer

Redimensionnement OK Ouvrir Fermer

OK Ouvrir

Fermer

RedimensionnementOK Ouvrir FermerFermer

plus visible

Page 15: Cours d’introduction à Java

FlowLayout (4) : conseils d'utilisation

Ne pas utiliser un objet Ne pas utiliser un objet Container géré par un géré par un FlowLayout à à l'intérieur d'un container dont le gestionnaire de présentation l'intérieur d'un container dont le gestionnaire de présentation respecte la hauteur préférée.respecte la hauteur préférée.

Le Le FlowLayout cache réellement et effectivement les composants cache réellement et effectivement les composants qui ne rentrent pas dans le cadre.qui ne rentrent pas dans le cadre.

Le Le FlowLayout n'a d'intérêt que quand il y a peu de composants. n'a d'intérêt que quand il y a peu de composants. L'équivalent vertical du L'équivalent vertical du FlowLayout n'existe pas, il faut ou l'écrire n'existe pas, il faut ou l'écrire

soit même, ou utiliser le Layout Manager soit même, ou utiliser le Layout Manager BoxLayout de de javax.swing Cacul de la Cacul de la taille préférée d'un objet d'un objet Container utilisant un utilisant un

FlowLayout : : largeur préférée = Somme de la largeur de tous les composants = Somme de la largeur de tous les composants hauteur préférée = La plus grande = La plus grande hauteur préféréehauteur préférée de ses composants de ses composants

Page 16: Cours d’introduction à Java

FlowLayout (5) : ce qu’il faut retenir

La présentation La présentation FlowLayout positionne les composants ligne par positionne les composants ligne par ligne. ligne. Chaque fois qu'une ligne est remplie, une nouvelle ligne est Chaque fois qu'une ligne est remplie, une nouvelle ligne est

commencée.commencée. Le gestionnaire Le gestionnaire FlowLayout n'impose pas la taille des composants n'impose pas la taille des composants

mais leur permet d'avoir la taille qu'ils préfèrent.mais leur permet d'avoir la taille qu'ils préfèrent. Le FlowLayout cache réellement et effectivement les composants Le FlowLayout cache réellement et effectivement les composants

qui ne rentrent pas dans le cadre.qui ne rentrent pas dans le cadre. Le FlowLayout n'a d'intérêt que quand il y a peu de composants.Le FlowLayout n'a d'intérêt que quand il y a peu de composants.

Page 17: Cours d’introduction à Java

FlowLayout (6) : exemple de AppliFlowLayout.java

Redimensionnement

Redimensionnement

Page 18: Cours d’introduction à Java

BorderLayout (1) : généralités

BorderLayout divise son espace de travail en cinq zones divise son espace de travail en cinq zones géographiques : géographiques : North, , South, , East, , West et et Center..

Les composants sont ajoutés par nom à ces zones (un seul Les composants sont ajoutés par nom à ces zones (un seul composant par zone).composant par zone). ExempleExemple

add("North", new Button("Le bouton nord !")); Si une des zones de bordure ne contient rien, sa taille est 0.Si une des zones de bordure ne contient rien, sa taille est 0.

NORTH

WEST CENTER EAST

SOUTH

Page 19: Cours d’introduction à Java

BorderLayout (2) : stratégie de disposition

Stratégie de disposition du Stratégie de disposition du BorderLayout S'il y a un composant dans la partie placée dans la partie S'il y a un composant dans la partie placée dans la partie NORTH, il , il

récupère sa récupère sa taille préféréetaille préférée, respecte sa , respecte sa hauteur préféréehauteur préférée si possible et si possible et fixe sa largeur à la totalité de la largeur disponible de l'objet fixe sa largeur à la totalité de la largeur disponible de l'objet Container..

S'il y a un composant dans la partie placée dans la partie S'il y a un composant dans la partie placée dans la partie SOUTH, il , il fait pareil que dans le cas de la partie fait pareil que dans le cas de la partie NORTH..

S'il y a un composant dans la partie placée dans la partie S'il y a un composant dans la partie placée dans la partie EAST, il , il récupère sa récupère sa taille préféréetaille préférée, respecte sa , respecte sa largeurlargeur préféréepréférée si possible et si possible et fixe sa hauteur à la totalité de la hauteur encore disponible.fixe sa hauteur à la totalité de la hauteur encore disponible.

S'il y a un composant dans la partie placée dans la partie S'il y a un composant dans la partie placée dans la partie WEST, il fait , il fait pareil que dans le cas de la partie pareil que dans le cas de la partie EAST..

S'il y a un composant dans la partie S'il y a un composant dans la partie CENTER, il lui donne la place qui , il lui donne la place qui reste, s'il en reste encore.reste, s'il en reste encore.

Page 20: Cours d’introduction à Java

BorderLayout (3) : comportement du redimensionnement

N

O

RedimensionnementE

S

C

N

O E

S

C

Lors du redimensionnement, le composant est lui-même Lors du redimensionnement, le composant est lui-même redimensionné en fonction de la taille de la zone, c-à-d :redimensionné en fonction de la taille de la zone, c-à-d : les zones nord et sud sont éventuellement élargies les zones nord et sud sont éventuellement élargies mais pasmais pas allongées. allongées. les zones est et ouest sont éventuellement allongées les zones est et ouest sont éventuellement allongées mais pasmais pas élargies, élargies, la zone centrale est étirée dans les deux sens.la zone centrale est étirée dans les deux sens.

Page 21: Cours d’introduction à Java

BorderLayout (4) : calcul de la taille préférée

Calcul de la Calcul de la taille préféréetaille préférée d’un objet Container utilisant un d’un objet Container utilisant un BorderLayout : BorderLayout : largeur préférée = La plus grande valeur parmi :

– largeur préférée du « NORTH »– largeur préférée du « SOUTH »

– (largeur préférée du « WEST ») + (largeur préféré du « CENTER ») +

(largeur préférée du « EAST ») + ("Horizontal Gap")

hauteur préférée = ("Vertical Gap") + (hauteur préférée du « NORTH »)

+ (hauteur préférée du « SOUTH ») + MaximunEntre( hauteur préférée du « WEST », la hauteur préférée de « CENTER », la hauteur préférée du « EAST »)

Page 22: Cours d’introduction à Java

BorderLayout (5) : exemple de AppliBorderLayout.java

Redimensionnement

Redimensionnement

Page 23: Cours d’introduction à Java

GridLayout (1)

Le gestionnaire Le gestionnaire GridLayout découpe la zone d'affichage en lignes découpe la zone d'affichage en lignes et en colonnes qui définissent des cellules de dimensions égales.et en colonnes qui définissent des cellules de dimensions égales. Lorsqu'on ajoute des composants, les cellules sont remplies de Lorsqu'on ajoute des composants, les cellules sont remplies de

gauche à droite et de haut en bas.gauche à droite et de haut en bas. Le Le GridLayout dispose les composants dans une grille. dispose les composants dans une grille. Chaque composant à la même taille et est positionné de gauche à Chaque composant à la même taille et est positionné de gauche à

droite et du bas vers le haut. droite et du bas vers le haut. Les 2 paramètres importants sont les rangées et les colonnes. Les 2 paramètres importants sont les rangées et les colonnes.

Seul l'un des deux est utilisé, l'autre est calculé en fonction du Seul l'un des deux est utilisé, l'autre est calculé en fonction du premier et du nombre de composants.premier et du nombre de composants.

Construction d'un GridLayout : new GridLayout(3,2);

nombre de lignes nombre de colonnes

Page 24: Cours d’introduction à Java

GridLayout (2)

1 2

3Redimensionnement

4

5 6

1 2

3 4

5 6

Lors du redimensionnement les composants changent tous de Lors du redimensionnement les composants changent tous de taille mais leurs positions relatives ne changent pas.taille mais leurs positions relatives ne changent pas.

Page 25: Cours d’introduction à Java

GridLayout (3) : calcul de la taille préférée

La La taille préféréetaille préférée d'un d'un GridLayout se calcule en prenant la plus se calcule en prenant la plus grande hauteur et la plus grande largeur dans les grande hauteur et la plus grande largeur dans les tailles préféréestailles préférées des composants. Il met tous les composants à cette hauteur et à des composants. Il met tous les composants à cette hauteur et à cette largeur. Donc la cette largeur. Donc la taille préférée vaut : vaut : hauteur préférée = ( plus grande taille préférée des composants * nbre hauteur préférée = ( plus grande taille préférée des composants * nbre

de colonnes ) + ( "de colonnes ) + ( "Horizontal GapHorizontal Gap" * (nbre de colonnes + 1 ))" * (nbre de colonnes + 1 )) largeur préféré = ( plus grande largeur préférée des composants * largeur préféré = ( plus grande largeur préférée des composants *

nbre de rangées ) + ( "nbre de rangées ) + ( "Vertical GapVertical Gap" * (nbre de rangées + 1 ))" * (nbre de rangées + 1 ))

Page 26: Cours d’introduction à Java

GridLayout (4) : exemple

import java.awt.*;

import java.applet.Applet;

public class ButtonGridApplet extends Applet

{

public void init()

{

setLayout(new GridLayout(3,2));

for (int i = 1; i < 7; i++)

add(new Button(Integer.toString(i)));

}

}

<html>

<head><title>ButtonGridApplet</title></head>

<BODY>

<applet codebase="." code="ButtonGridApplet.class" width=100 height=100>

</applet>

</body>

</HTML>

Redimensionnement

Page 27: Cours d’introduction à Java

CardLayout

Le Le CardLayout n'affiche qu'un composant à la fois : n'affiche qu'un composant à la fois : les composants sont considérées comme empilées, à la façon d'un tas les composants sont considérées comme empilées, à la façon d'un tas

de cartes. de cartes. La taille préférée d'un La taille préférée d'un Container utilisant un utilisant un CardLayout sera la taille sera la taille

préférée du plus grand de ces composants.préférée du plus grand de ces composants. La présentation La présentation CardLayout permet à plusieurs composants de permet à plusieurs composants de

partager le même espace d'affichage de telle sorte que seul l'un partager le même espace d'affichage de telle sorte que seul l'un d'entre eux soit visible à la fois.d'entre eux soit visible à la fois.

Pour ajouter un composant à un conteneur utilisant un Pour ajouter un composant à un conteneur utilisant un CardLayout il il faut utiliser faut utiliser add(String cle, Component monComposant)

Voir l’exemple commenté Voir l’exemple commenté AppliCardLayout.java

Page 28: Cours d’introduction à Java

GridBagLayout

Le gestionnaire Le gestionnaire GridBagLayout fournit des fonctions de fournit des fonctions de présentation complexesprésentation complexes basées sur une grille,basées sur une grille, permettant à des composants simples de prendre leur taille préférée permettant à des composants simples de prendre leur taille préférée

au sein d'une cellule, au lieu de remplir toute la cellule.au sein d'une cellule, au lieu de remplir toute la cellule. Il permet aussi l'extension d'un même composant sur plusieurs Il permet aussi l'extension d'un même composant sur plusieurs

cellules.cellules. Le Le GridBagLayout est compliqué à gérer. est compliqué à gérer. Dans la plupart des cas, il est possible d’éviter de l’utiliser en Dans la plupart des cas, il est possible d’éviter de l’utiliser en

associant des objets associant des objets Container utilisant des gestionnaires utilisant des gestionnaires différents.différents.

Ce gestionnaire sera abordé plus tard si on en a le temps Ce gestionnaire sera abordé plus tard si on en a le temps


Recommended