interfaces graphiques en javatp supplémentaire .interfaces graphiques en java tp supplémentaire

Download interfaces graphiques en JavaTP supplémentaire .interfaces graphiques en Java TP supplémentaire

Post on 13-Dec-2018

213 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

EILCO ING 1 - POO Java - Les graphismes en JAVA 2015 - 2016

interfaces graphiques en JavaTP supplmentaire

Les objectifs de ce TP sont les suivants : dcouvrir les direntes formes d'interfaces graphiques proposs l'utilisateur pour dialoguer avec

le programme ou l'application proposes par Java fentre (AWT Frame et Swing JFrame) dcouvrir les composants graphiques 1 d'interface Swing dcouvrir les gestionnaires de placement des composants sur l'interface dcouvrir la gestion des vnements ; application la cration d'un petit jeu - vido (TP suivant)

I Les applications fentres

Les applications fentres sont des programmes excuts directement sur un poste de travail parla machine virtuelle Java et qui orent une interface riche l'utilisateur (on parle de client lourd).

L'API Java met disposition 2 packages permettant la gestion de ces interfaces : AWT et Swing. Nousn'allons tudier dans le cadre de ce TP principalement l'API Swing.

I.1 Tester - HelloSwing

Exemple utilisant le package Swing :

1 import javax.swing.JFrame;

2 import javax.swing.JLabel;

3 import java.awt.Container;

4 import javax.swing.JPanel;

5 import java.awt.BorderLayout;

6

7 public class HelloSwing {

8

9 JPanel monPanel;

10 JFrame maFenetre;

11

12 public HelloSwing () {

13

14 maFenetre = new JFrame ();

15 maFenetre.setSize (500 ,500);

16 maFenetre.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ) ;

17 maFenetre.setLocation (100 ,100) ;

18 maFenetre.setVisible(true) ;

19

20 monPanel = new JPanel ();

21 maFenetre.add(monPanel);

22

23

24 JLabel msg = new JLabel ( "Bienvenue ! ") ;

1. Ces composants sont appels "contrles graphiques" : ils sont en eet destins au contrle de l'excution par l'utilisateur

1

EILCO ING 1 - POO Java - Les graphismes en JAVA 2015 - 2016

25 monPanel.add (msg);

26

27 }

28 public static void main ( String [] args) {

29 HelloSwing test = new HelloSwing ();

30 }

31 }

lignes 1-4 : importation des classes utiles 12 : dbut de dnition du constructeur 14 : cration de la fentre 15 : taille de la fentre 16 : dnit le comportement par dfaut sur la fermeture (clic sur X) : on quitte la fentre (valable

pour les applications avec fentre unique) 17 : dnit la position de la fentre 18 : rend visible la fentre 20 : cration d'un JPanel 21 : ajout du JPanel la fentre 24 : cration d'un objet tiquette 25 : ajout de l'objet tiquette au conteneur 29 : cration d'un objet de la classe 'HelloSwing'

1.

A raliser1. crer la classe HelloSwing

2. compiler et tester la classe

Le lancement de l'application est classique :

> java HelloSwing

A raliserLa mthode setResizable(boolean v) s'applique un objet de type Jframe que fait cette mthode ?Tester l.

I.2 Notes sur Swing

Swing regroupe un ensemble de classes permettant la construction d'environnements graphiques volus.

Les composants proposs sont indpendants de la machine sur laquelle ils s'excutent (contrairement AWT) : la performance est moindre, mais l'indpendance plus forte.

Swing s'appuie sur un certain nombre de classes non graphiques de AWT (pour la gestion des vne-ments, par exemple), reprend les fonctionnalits de AWT, rednit les composants d'interface complte-ment en Java, inclut des composants d'interface plus riches (listes, panneau onglets, etc.).

les plus : portabilit (pur java), comportement standard sur toutes plate-formes, large palette decomposants, look and feel congurable (indpendant de la plate-forme)

les moins : portabilit des applets (composants Swing moins implments dans les navigateurs),moins bonne performance

II Premire application Swing - Interface graphique

II.1 Classes JFrame, JLabel, JTextField, JButton

Pour dnir l'interface de cet exemple, les classes suivantes (package javax.swing) seront utilises :

2

EILCO ING 1 - POO Java - Les graphismes en JAVA 2015 - 2016

Figure 1 Hirarchie des composants Swing (incomplet)

JFrame : conteneur de plus haut niveau, la fentre JPanel : conteneur lger, insrer dans la fentre JLabel : tiquette de texte, son constructeur attend le texte qui sera ach JTextField : zone de saisie de texte, son constructeur attend une longueur initiale JButton : bouton d'action, son constructeur attend le texte du bouton

Pour construire une interface graphique, on utilisera une fentre (JFrame) et on ajoutera des compo-sants graphiques (conteneurs JPanel et contrles graphiques) son conteneur principal (on pourra ajoutergalement une barre de menu dans la zone prvue cet eet).

On pourra utiliser les mthodes suivantes : (la classe JFrame) : getContentPane() : renvoie une rfrence vers le conteneur principal associ la fentre ; c'est un

objet de classe Container add() : ajoute un objet graphique au conteneur setTitle(une chane de caractres) : pour dnir le titre de la fentre setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); : pour dnir l'action sur la fermeture de

la fentre, ici quitter (exit) setSize(largeur, hauteur) : pour dnir la taille de la fentre (pas de gestionnaire de position-

nement) pack() : pour ajuster la taille de la fentre la taille et au placement de ses composants (avec un

gestionnaire de positionnement) setVisible(boolen) : pour rendre visible/invisiblePar exemple, pour rcuprer une rfrence au conteneur principal :

Container c = getContentPane ();

Une fois, ces dirents composants crs, il faut indiquer la faon dont ils sont disposs l'cran. Laseule chose que nous aurons besoin de savoir est que l'objet JPanel contiendra tous les autres objetsgraphiques. Nous pouvons rcuprer le conteneur de la fentre, c'est--dire la zone graphique associe la fentre dans laquelle nous ajouterons nos dirents composants graphiques. Cet objet qui nous servirade conteneur est un objet de la classe Jpanel.

La mthode setContentPane de la classe JFrame associe le conteneur (la mthode add(\,) ralise lamme opration) la fentre. La syntaxe est la suivante :

monJFrame.setContentPane(monJPanel);

Ensuite, il sut simplement d'ajouter des objets au conteneur grce la mthode add de la classeJPanel.

3

EILCO ING 1 - POO Java - Les graphismes en JAVA 2015 - 2016

Voici un exemple de cration d'une fentre et l'intrieur de cette fentre, crons un JPanel et nousajoutons des objets ce JPanel.

1 import javax.swing.JFrame;

2 import javax.swing.JButton;

3 import javax.swing.JLabel;

4 import javax.swing.JPanel;

5

6 public class Ex02 {

7

8 public static void main(String [] args){

9

10 JFrame maFenetre = new JFrame("ma f en t r e ");11 maFenetre.setSize (800 ,600);

12 maFenetre.setLocationRelativeTo(null);

13

14

15 // cration d'un objet de type Bouton

16 JButton monBouton = new JButton(" Java ");17

18 // maintenant on cre et on associe le JPanel a la fentre

19 JPanel panel = new JPanel ();

20 maFenetre.setContentPane(panel);

21

22 // et on rajoute notre boutton

23 panel.add(monBouton);

24

25 // et on rajoute galement un champ textuel

26 JLabel monLabel = new JLabel("J ' aime vra iment beaucoup l e l angag e Java ");27 panel.add(monLabel);

28

29 maFenetre.setVisible(true);

30 }

31

32 }

Mthodes applicables aux composants de type conteneurs : setLayout(un gestionnaire de positionnement) : il sera positionn la valeur 'null' pour

l'instant add(un composant d'interface) : pour ajouter un objet au conteneur remove(un composant d'interface) : pour retirer un objet du conteneur removeAll() : pour retirer tous les composants du conteneur

A raliser Rajouter un champ de type JLabel qui prend un objet de type String lors de sa cration (ici

utiliser Aujourd'hui) ; Rajouter 7 objets de type JCheckBox an d'obtenir l'exemple suivant. Consulter la docu-

mentation sur la classe JCheckBox pour apprendre comment crer des objets de ce type(http://docs.oracle.com/javase/6/docs/api/javax/swing/JCheckBox.html)

Mthodes applicables aux composants d'interface : setBounds(x, y, width, height) : dnit les position (X, colonne, et Y, ligne, en partant du

coin haut-gauche) et taille (largeur et hauteur) du composant setSize(width, height) : dnit la taille d'un composant (utilisable si le conteneur n'a pas de

gestionnaire de positionnement) setLocation(positionx x, position y) : pour positionner le composant dans le conteneur setPreferedSize(width, height) : dnit la taille (largeur et hauteur) du composant getText() : renvoie la valeur saisie dans un objet JTextFieldPar exemple, pour dnir la position et la dimension de l'tiquette nomme 'titre' :

4

http://docs.oracle.com/javase/6/docs/api/javax/swing/JCheckBox.html

EILCO ING 1 - POO Java - Les graphismes en JAVA 2015 - 2016

Figure 2 Utilisation de JCheckBox

JLabel titre = new JLabel("un t i t r e ");titre.setBounds (10 ,10 ,100 ,50);

Par exemple, pour ajouter l'tiquette nomme 'titre' au conteneur de la fentre :

Container conteneur = getContentPane ();

conteneur.add(titre);

II.2 Classe Color

La classe java.awt.Color propose un certain nombre de constantes (attributs static) dnissantles couleurs de base. Il est cependant possible d'instancier un objet de Color en prcisant les valeurs derouge, vert et bleu.

Pour dnir des couleurs d'un composant graphique(contrles graphiques qui hritent de la classeJC

Recommended

View more >