59
P.O.O. (Programmation Orientée Objet) CHOUITI Sidi Mohammed Cours pour L2 en Informatique Département d’Informatique Université de Tlemcen 2017-2018

P.O.O. (Programmation Orientée Objet) · P.O.O. (Programmation Orientée Objet) CHOUITI Sidi Mohammed Cours pour L2 en Informatique Département d’Informatique Université de Tlemcen

  • Upload
    hathien

  • View
    247

  • Download
    1

Embed Size (px)

Citation preview

P.O.O. (Programmation

Orientée Objet)

CHOUITI Sidi Mohammed

Cours pour L2 en Informatique

Département d’Informatique

Université de Tlemcen

2017-2018

UABB-Tlemcen – Départ d’Informatique 2

Plan du cours

1. Introduction à la Programmation Orientée Objet

2. Classes et objets

3. Héritage et polymorphisme

4. Interface et implémentation

5. Classes importantes en java

6. Gestion des exceptions

7. Interface graphique et Applet

8. …

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 3

Interfaces graphiques

IHM

Les interfaces homme-machine (dénommées IHM) assurernt

ergonomie et interactivité avec l'utilisateur

Elles font intervenir des éléments tels que : les fenêtres, les

menus déroulants, les boutons, etc.

IHM avec Java

Ensemble de classes permettant de construire et de manipuler des

interfaces graphiques sous java.

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 4

Interfaces graphiques

Paquetage : java.awt (Abstract Window Toolkit)

• Ce package est la base des extensions ultérieures comme

Swing.

• Les classes contenues dans AWT dérivent (héritent) toutes de

la classe Component.

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 5

Paquetage : java.awt (Abstract Window Toolkit)

Container

classe abstraite

Composants qui en

contiennent d’autres

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 6

Les classes Conteneurs

• Dérivent de la classe java.awt.Container,

• Essentielles pour la construction d'IHM Java

• Permettent d'intégrer d'autres objets visuels et de les

organiser à l'écran.

Paquetage : java.awt (Abstract Window Toolkit)

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 7

Les principales classes conteneurs

Paquetage : java.awt (Abstract Window Toolkit)

Classe Fonction

java.awt.Window Crée des rectangles simples sans cadre, sans

menu, sans titre.

java.awt.Panel Crée une surface sans bordure, capable de

contenir d'autres éléments : boutons, panel, etc.

java.awt.ScrollPane Crée une barre de défilement horizontale et/ou

verticale.

java.awt.Frame Crée des fenêtres avec bordure, pouvant

intégrer des menus, avec un titre, etc.

java.awt.Dialog Crée une fenêtre de dialogue avec l'utilisateur.

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 8

Quelques méthodes de la classe Frame :

Paquetage : java.awt (Abstract Window Toolkit)

Méthode Fonction

public void setSize(int width,

int height)

retaille la largeur (width) et la hauteur

(height) de la fenêtre.

public void setBounds(int x,

int y, int width, int height)

retaille la largeur (width) et la hauteur

(height) de la fenêtre et la positionne en

x,y sur l'écran.

public Frame(String title)

public Frame( )

Les deux constructeurs d'objets Frame,

celui qui possède un paramètre String

écrit la chaîne dans la barre de titre de

la fenêtre.

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 9

Quelques méthodes de la classe Frame :

Paquetage : java.awt (Abstract Window Toolkit)

Méthode Fonction

public void

setVisible(boolean b )

Change l'état de la fenêtre en mode visible

ou invisible selon la valeur de b.

public void hide( ) Change l'état de la fenêtre en mode

invisible.

Différentes surcharges de la

méthode add :

public Component

add(Component comp)

etc.

Permettent d'ajouter un composant à

l'intérieur de la fenêtre.

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 10

Exemple 1 :

Paquetage : java.awt (Abstract Window Toolkit)

import java.awt.*;

class AppliWindow

{

public static void main(String [ ] arg) {

Frame fen = new Frame ("Bonjour" );

fen. setVisible ( true );

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 11

Exemple 1 :

Paquetage : java.awt (Abstract Window Toolkit)

Ci-dessous la fenêtre affichée par le programme précédent :

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 12

Exemple 2 :

Paquetage : java.awt (Abstract Window Toolkit)

import java.awt.*;

class AppliWindow2

{

public static void main(String [ ] arg) {

Frame fen = new Frame ("Bonjour" );

fen.setBounds (100, 100, 250, 150);

fen. setVisible ( true );

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 13

Exemple 2 :

Paquetage : java.awt (Abstract Window Toolkit)

Ci-dessous la fenêtre affichée par le programme précédent :

fen.setBounds(100,100,250,150);

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 14

•Comme ce sont des objets conteneurs, il est possible en particulier,

d'y inclure des composants.

•Enrichissons notre fenêtre précédente d'un bouton poussoir et de

deux radio boutons

Paquetage : java.awt (Abstract Window Toolkit)

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 15

Exemple 3 :

Paquetage : java.awt (Abstract Window Toolkit)

import java.awt.*;

class AppliWindow3 {

public static void main(String [ ] arg) {

fen.setLayout(new FlowLayout( ));

Button entrez = new Button("Entrez");

Checkbox bout1 = new Checkbox("Choix 1");

Checkbox bout2 = new Checkbox("Choix 2");

fen.add(entrez);

fen.add(bout1); fen.add(bout2);

fen.setVisible ( true );

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 16

Exemple 3 :

Paquetage : java.awt (Abstract Window Toolkit)

Ci-dessous la fenêtre affichée par le programme précédent :

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 17

fen.setLayout(new FlowLayout( ));

• Sert à positionner les objets visuellement dans la fenêtre les

uns à côté des autres.

• La classe FlowLayout place les composants dans une ligne,

dimensionnés à leur taille par défaut.

Paquetage : java.awt (Abstract Window Toolkit)

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 18

• Enrichissons notre fenêtre maintenant d‘une barre de menus

contenant deux menus : "fichier" et "édition" :

Paquetage : java.awt (Abstract Window Toolkit)

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 19

Exemple 4 :

Paquetage : java.awt (Abstract Window Toolkit)

// les menus :

MenuBar mbar = new MenuBar( );

Menu meprinc1 = new Menu("Fichier");

Menu meprinc2 = new Menu("Edition");

MenuItem item1 = new MenuItem("choix n°1");

MenuItem item2 = new MenuItem("choix n° 2");

fen.setMenuBar(mbar);

meprinc1.add(item1); meprinc1.add(item2);

mbar.add(meprinc1); mbar.add(meprinc2);

fen.setVisible ( true );

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 20

Exemple 4 :

Paquetage : java.awt (Abstract Window Toolkit)

Ci-dessous la fenêtre affichée par le programme précédent :

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 21

Exemple 4 :

Paquetage : java.awt (Abstract Window Toolkit)

La fenêtre après que l'utilisateur clique sur le menu Fichier :

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 22

Exemple 4 :

Paquetage : java.awt (Abstract Window Toolkit)

MenuBar mbar = new MenuBar( );

Menu meprinc1 = new Menu("Fichier");

Menu meprinc2 = new Menu("Edition");

MenuItem item1 = new MenuItem("choix n°1");

MenuItem item2 = new MenuItem("choix n° 2");

A cet instant du programme tous ces objets existent mais ne

sont pas attachés entre eux.

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 23

Exemple 4 :

Paquetage : java.awt (Abstract Window Toolkit)

fen.setMenuBar(mbar);

• La méthode setMenuBar de la classe Frame sert à

attacher (inclure) à la fenêtre fen de classe Frame,

l'objet barre de menus mbar .

meprinc1.add(item1);

meprinc1.add(item2);

• servent grâce à la méthode add de la classe Menu, à

attacher les deux objets (sous-menus) nommés item1

et item2 au menu principal meprinc1.

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 24

Exemple 4 :

Paquetage : java.awt (Abstract Window Toolkit)

mbar.add(meprinc1);

mbar.add(meprinc2);

• servent grâce à la méthode add de la classe MenuBar,

à attacher les deux objets de catégorie menu principal

nommés meprinc1 et meprinc2, à la barre des menus

mbar

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 25

L’API swing :

Paquetage : javax.swing

•Apparue dès Java 2, en proposant des composants dits "légers",

•Indépendants du système d’exploitation

•Dotés de propriétés plus riches que ceux de AWT.

•Les deux API utilisent des concepts semblables, mais pas

totalement identiques.

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 26

JFrame :

Paquetage : javax.swing

import javax.swing.* ;

public class Premfenetre{

public static void main (String args[]){

JFrame fen = new JFrame() ;

fen.setSize (300, 150) ;

fen.setTitle ("Ma premiere fenetre") ;

fen.setVisible (true) ;

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 27

Différence entre une fenêtre JFrame et la console

Paquetage : javax.swing

import javax.swing.* ;

public class Premfenetre1{

public static void main (String args[]){

System.out.println ("debut main") ;

JFrame fen = new JFrame() ;

fen.setSize (300, 150) ;

fen.setTitle ("Ma premiere fenetre") ;

System.out.println("avant affichage fenetre") ;

fen.setVisible (true) ;

System.out.println ("fin main") ;

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 28

Arrêt du programme

La fenêtre Jframe continue de s’exécuter notion de thread

Paquetage : javax.swing

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 29

Fenêtre personnalisée

Paquetage : javax.swing

import javax.swing.* ;

class MaFenetre extends JFrame{

public MaFenetre () {

setTitle ("Ma premiere fenetre") ;

setSize (300, 150) ;

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 30

Fenêtre personnalisée

Paquetage : javax.swing

import javax.swing.JFrame;

public class Premfen1{

public static void main (String args[]){

JFrame fen = new MaFenetre() ;

fen.setVisible (true) ;

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 31

Modification des caractéristiques d’une fenêtre

Paquetage : javax.swing

Scanner sc = new Scanner(System.in);

while (true) {// fin sur longueur titre nulle

System.out.print ("nouvelle largeur : ") ; int larg=sc.nextInt() ;

System.out.print ("nouvelle hauteur : "); int haut=sc.nextInt();

System.out.print ("nouveau titre : (vide pour finir) ");

sc.nextLine(); String tit = sc.nextLine() ;

if (tit.length() == 0) break ;

fen.setSize (larg, haut) ; fen.setTitle(tit) ;

}

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 32

Arrêt du programme:

Paquetage : javax.swing

• La programmation événementielle constitue la

caractéristique essentielle d’une interface graphique

• Exemple d’événement : un clic dans la fenêtre principale

Gestion d’un clic dans la fenêtre

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 33

Arrêt du programme:

Paquetage : javax.swing

• Tout événement possède ce que l’on nomme une source

• Il Objet lui ayant donné naissance : bouton, menu, sous-

menu, fenêtre, etc.

• Dans notre exemple, cette source sera la fenêtre

principale.

Gestion d’un clic dans la fenêtre

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 34

Paquetage : javax.swing

• On associe à la source un objet de son choix dont la classe

implémente une interface particulière correspondant à

une catégorie d’événements

• Chaque méthode proposée par l’interface correspond à un

événement de la catégorie

• Catégorie d’événements souris qu’on peut traiter avec un

écouteur de souris (interface MouseListener).

• mousePressed, mouseReleased, mouseEntered,

mouseExited et mouseClicked.

Gestion d’un clic dans la fenêtre

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 35

Gestion d’un clic dans la fenêtre

Paquetage : javax.swing

class EcouteurSouris implements MouseListener{

public void mouseClicked (MouseEvent ev) { ..... }

public void mousePressed (MouseEvent ev) { ..... }

public void mouseReleased(MouseEvent ev) { ..... }

public void mouseEntered (MouseEvent ev) { ..... }

public void mouseExited (MouseEvent ev) { ..... }

// autres methodes et champs de la classe

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 36

Paquetage : javax.swing

Gestion d’un clic dans la fenêtre

public void mouseClicked(MouseEvent ev){

System.out.println ("clic dans fenetre") ;

}

Introduire dans le constructeur de notre fenêtre une instruction

de la forme

addMouseListener (objetEcouteur) ;

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 37

Paquetage : javax.swing

Gestion d’un clic dans la fenêtre

class MaFenetre extends JFrame implements MouseListener{

public MaFenetre () { // constructeur

.....

addMouseListener (this) ; // la fenêtre sera son propre

// écouteur d’évenements souris

}

public void mouseClicked(MouseEvent ev) {

System.out.println ("clic dans fenêtre") ;

}

public void mousePressed (MouseEvent ev) {} …

// autres méthodes de la classe MaFenetre

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 38

Paquetage : javax.swing

Notion d’Adaptateur

•Nous avons besoin que de la méthode mouseClicked.

•Mais nous avons dû fournir des définitions vides pour les

autres afin d’implémenter correctement toutes les méthodes

requises par l’interface MouseListener.

MouseAdapter implements MouseListener{

public void mouseClicked (MouseEvent ev) {}

public void mousePressed (MouseEvent ev) {}

public void mouseReleased(MouseEvent ev) {}

public void mouseEntered (MouseEvent ev) {}

public void mouseExited (MouseEvent ev){}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 39

Paquetage : javax.swing

Classe MouseEvent

• Argument transmis à la méthode mouseClicked.

• Un objet de cette classe est automatiquement créé par

Java, et transmis à l’écouteur voulu.

• Il contient un certain nombre d’informations, en

particulier les coordonnées du curseur de souris au

moment du clic

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 40

Arrêt du programme:

Paquetage : javax.swing

Ajout dans la fenêtre

Le composant Container

• Une Jframe possède toujours ce qu'on appelle un

conteneur (container)

Container

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 41

Arrêt du programme:

Paquetage : javax.swing

Ajout dans la fenêtre

Le composant Container

• JFrame dispose de deux méthodes:

JFrame.getContentPane () et

JFrame.setContentPane ()

Qui permettent d’accéder et de modifier le

Container contentPane de la JFrame

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 42

Arrêt du programme

Paquetage : javax.swing Exemple

import javax.swing.*; import java.awt.*;

public class Fenetre {

public static void main(String[] arg) {

JFrame cadre = new JFrame("Premiere fenetre");

JPanel panel = new JPanel();

panel.setPreferredSize(new Dimension(250, 150));

panel.setBackground(Color.RED);

cadre.setContentPane(panel);

cadre.setLocation(400, 300);

cadre.pack();

cadre.setVisible(true);

cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 43

Paquetage : javax.swing

Exemple

pack() calcule la dimension de la fenêtre en fonction de ce qui

est mis à l'intérieur.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

On demande par cette instruction que l'application se termine

quand on ferme la fenêtre.

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 44

Arrêt du programme

Paquetage : javax.swing

Exemple

import javax.swing.*; import java.awt.*;

public class Fenetre {

public static void main(String[] arg) {

JFrame cadre = new JFrame("Premiere fenetre");

JPanel panel = (JPanel) cadre.getContentPane ();

panel.setPreferredSize(new Dimension(250, 150));

panel.setBackground(Color.RED);

cadre.setLocation(400, 300);

cadre.pack();

cadre.setVisible(true);

cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 45

Arrêt du programme:

Paquetage : javax.swing

Ajout dans la fenêtre

Création d’un bouton et ajout dans la fenêtre

JButton monBouton = new JButton("Essai");

getContentPane().add(MonBouton);

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 46

Arrêt du programme:

Paquetage : javax.swing

Ajout dans la fenêtre

Exemple

import javax.swing.* ; import java.awt.*;

class Fen1Bouton extends JFrame{

private JButton monBouton ;

public Fen1Bouton (){

setTitle ("Premier bouton") ;

setSize (300, 200) ;

monBouton =new JButton ("Essai");

getContentPane().add(monBouton);

getContentPane().setLayout(new FlowLayout());

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 47

Arrêt du programme:

Paquetage : javax.swing

Gestion du bouton avec un écouteur

•Créer un écouteur

objet d’une classe qui implémente l’interface ActionListener

Cette classe ne contient qu’une méthode : actionPerformed

•Associer cet écouteur

au bouton par la méthode addActionListener

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 48

Arrêt du programme:

Paquetage : javax.swing

Gestion du bouton avec un écouteur

Exemple

import javax.swing.*;import java.awt.event.*;import java.awt.*;

class Fen2Bouton extends JFrame implements ActionListener {

private JButton monBouton ;

public Fen2Bouton () {

monBouton.addActionListener(this);

getContentPane().setLayout(new FlowLayout());

}

public void actionPerformed (ActionEvent ev){

System.out.println ("action sur bouton ESSAI") ;

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 49

Arrêt du programme:

Paquetage : javax.swing

Gestion du bouton avec un écouteur

Entrée de plusieurs boutons

private JButton monBouton1, monBouton2;

monBouton1 =new JButton (”Bouton A");

monBouton2 =new JButton (”Bouton B");

getContentPane().add(monBouton1);

getContentPane().add(monBouton2);

...

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 50

Arrêt du programme:

Paquetage : javax.swing

Gestion du bouton avec un écouteur

La fenêtre écoute les boutons

… // la fenêtre écoute monBouton1

monBouton1.addActionListener(this);

// la fenêtre écoute monBouton2

monBouton2.addActionListener(this);

}

// gestion commune de tous les boutons

public void actionPerformed (ActionEvent ev) {

System.out.println ("action sur un bouton") ;

}

...

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 51

Arrêt du programme:

Paquetage : javax.swing

Gestion du bouton avec un écouteur

Gestion séparée des deux boutons

… public void actionPerformed (ActionEvent ev){

if (ev.getSource() == monBouton1)

System.out.println ("action sur bouton numéro 1") ;

if (ev.getSource() == monBouton2)

System.out.println ("action sur bouton numéro 2") ;

}

...

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 52

Arrêt du programme:

Paquetage : javax.swing

Gestion du bouton avec un écouteur

Classe écouteur différente de la fenêtre

Dans les exemples précédents, on a fait de la fenêtre l’objet

écouteur des boutons

Deux possibilités :

• Une classe écouteur par bouton

• Une seule classe écouteur pour tous les boutons

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 53

Arrêt du programme:

Paquetage : javax.swing

Gestion du bouton avec un écouteur

Classe écouteur différente de la fenêtre

• Une classe écouteur par bouton

class EcouteBouton1 implements ActionListener{

public void actionPerformed (ActionEvent ev){

System.out.println ("action sur bouton 1") ;

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 54

Arrêt du programme:

Paquetage : javax.swing

Gestion du bouton avec un écouteur

Classe écouteur différente de la fenêtre

• Une seule classe écouteur pour tous les boutons

class EcouteBouton implements ActionListener{

public void actionPerformed (ActionEvent ev){

if (ev.getSource() == monBouton1)

System.out.println ("action sur bouton numéro 1") ;

if (ev.getSource() == monBouton2)

System.out.println ("action sur bouton numéro 2") ;

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 55

Arrêt du programme:

Paquetage : javax.swing

Gestion du bouton avec un écouteur

Classe écouteur différente de la fenêtre

Dans les exemples précédents, on a fait de la fenêtre l’objet

écouteur des boutons

Deux possibilités :

• Une classe écouteur par bouton

• Une seule classe écouteur pour tous les boutons

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 56

Arrêt du programme:

Paquetage : javax.swing

Dynamique des composants

il faut savoir qu’on peut, à tout instant :

• créer un nouveau composant : conteneur.add(compo);

• supprimer un composant,

• désactiver un composant : compo.setEnabled (false) ;

• réactiver un composant désactivé : compo.setEnabled (true);

Aussi tester s’il est activé ou non : compo.isEnabled() ;

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 57

Arrêt du programme:

Paquetage : javax.swing

Dynamique des composants

Exemple :

class EcoutCr implements ActionListener{

private Container contenu ;

public EcoutCr (Container contenu){

this.contenu = contenu ;

}

public void actionPerformed (ActionEvent ev){

JButton nouvBout = new JButton ("BOUTON") ;

contenu.add(nouvBout) ;

contenu.validate(); // pour recalculer

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 58

Arrêt du programme:

Paquetage : javax.swing

Dynamique des composants

class FenBoutonsDyn extends JFrame{

private JButton crBouton ;

public FenBoutonsDyn () {

Container contenu = getContentPane() ;

contenu.setLayout (new FlowLayout()) ;

crBouton = new JButton ("CREATION BOUTON") ;

contenu.add(crBouton) ;

EcoutCr ecoutCr = new EcoutCr (contenu) ;

crBouton.addActionListener (ecoutCr) ;

}

}

UABB-Tlemcen – Département d’Informatique - cours de GL1 pour Master SIC & MID 59

Arrêt du programme:

Paquetage : javax.swing

Dynamique des composants

Voir Exemple (classe): FenBoutonsDyn1

Activation / Désactivation