Vous êtes sur la page 1sur 4

Cours en Java

TP : Manipulation des boutons


Prsentation :
Au cours de ce TP, vous allez pouvoir manipuler les vnements dun ensemble de boutons, afin de crer un convertisseur. Les classes et les objets utiliss : 1. Les classes : a. Une classe principale qui contient la mthode main. b. Une classe pour la fentre JFrame. 2. Les objets : a. Cinq tableaux de type String : i. Un pour mettre la liste des grandeurs (Longueur, Masse, Temprature, Vitesse). ii. Un deuxime pour stocker les units de longueur (Mtres, Miles, Kilomtres). iii. Un troisime pour stocker les units de masse (Kilogrammes, Livres, Grammes). iv. Un quatrime pour stocker les units de temprature (Celsius, Fahrenheit, Kelvin). v. Un dernier pour stocker les units de vitesse (Km/Heure, Miles/Heure, Nuds). b. Un tableau de type JButton pour lensemble des boutons des grandeurs. c. Un tableau JTextField pour stocker les trois champs de saisie. d. Un tableau JLabel pour afficher les units de la grandeur en cours. e. Un objet JLabel pour afficher la grandeur en cours. f. Un objet de type String pour stocker la grandeur choisie. g. Un objet de type int pour stocker lid du JTextField choisi. h. Trois JPanel : i. Un pour contenir les boutons des grandeurs laide dun GridLayout. ii. Un autre pour contenir les JTextField ainsi que les JLabel laide dun GridLayout. iii. Un dernier qui englobe le JPanel des boutons, le JPanel des zones de texte et lafficheur de la grandeur en cours laide de BorderLayout. 3. Une classe interne (implmente linterface ActionListener) pour couter les vnements de click sur les boutons des grandeurs. 4. Une classe interne (implmente linterface KeyListener) pour couter les vnements de saisie sur les JTextField. Rappels : Voici comment on dclare une classe qui implmente l'interface ActionListener : class classeQuiEcoute implements ActionListener { public void actionPerformed(ActionEvent arg0){//Instructions} }
Page 1

TP en Java | Mr. Mohammed Rda Ouassini | Licence gnie informatique | Facult des Sciences et Techniques de Tanger

Pour que la classe, dclare en dessus, puisse couter un objet, on doit utiliser la mthode addActionListener sur lobjet couter, dans votre cas lobjet est un JButton : boutonAecouter.addActionListener(new classQuiEcoute()); Voici comment on dclare une classe qui implmente l'interface KeyListener : class classeQuiEcoute implements KeyListener { public void keyTyped(KeyEvent ke) { //Instruction } public void keyPressed(KeyEvent ke) { //Instruction } public void keyReleased(KeyEvent ke) { //Instruction } }

Pour que la classe, dclare en dessus, puisse couter un objet, on doit utiliser la mthode addKeyListener sur lobjet couter, dans votre cas lobjet est un JTextField : JTextFieldAecouter.addKeyListener(new classQuiEcoute());

Objectif :
En sappuyant sur les exemples que vous avez vus en cours et des rappels en dessus, vous devez raliser un convertisseur, voici un exemple :

Fentre JFrame

La structure de la fentre se prsente comme ceci : Les deux rectangles en bleu reprsentent deux GridLayout des JPanel ; un pour les boutons reprsentant les grandeurs et lautre pour les JTextField et leurs JLabel. Le rectangle en rouge reprsente le BorderLayout du conteneur JPanel global.

TP en Java | Mr. Mohammed Rda Ouassini | Licence gnie informatique | Facult des Sciences et Techniques de Tanger

Page 2

Chaque grandeur a ses propres units de mesure. Par exemple si vous cliquez sur le bouton Longueur les units de longueur doivent apparatre ct des champs de saisie, comme lindique la capture gauche. Idem pour les autres grandeurs. Pour vous aidez, voici les relations de conversion que vous allez utiliser : Longueur : Mtre = 1609.344 * Mile Mtre = 1000 * Kilomtre Masse : Kilogramme = Livre / 2.20462 Kilogramme = Gramme / 1000 Temprature : Celsius = ((Fahrenheit - 32) / 1.8) Celsius = Kelvin - 273.15; Vitesse : (Kilomtre/Heure) = (Mile/Heure) / 0.62137 (Kilomtre/Heure) = Nud / 0.53996 La mthode main de la classe principale ne doit contenir que le code suivant : package convertisseurapp; public class ConvertisseurApp { public static void main(String[] args) { Convertisseur convertisseur = new Convertisseur(); } } Votre classe JFrame doit avoir la structure suivante : public class Convertisseur extends JFrame { //Dclaration des objets

TP en Java | Mr. Mohammed Rda Ouassini | Licence gnie informatique | Facult des Sciences et Techniques de Tanger

Page 3

public Convertisseur() { //Personnalisation de la fentre //Personnalisation des JPanel et ajout des boutons //Ainsi que lajout des classes d'coute pour chaque objet } //Dclaration des deux classes internes (une qui implmente //l'interface ActionListener et lautre qui implmente //KeyListener) } Aprs avoir saisi un chiffre, la classe dcoute des JTextField va rcuprer lid du champ et faire appel la mthode de conversion. La mthode de conversion doit : Vrifier si les valeurs saisies sont des doubles, avant de faire la conversion, en cas dexception elle affecte la valeur 0 tous les champs de saisis. Vrifier lunit de mesure en cours laide de lobjet String prcdemment dclar, afin de faire la conversion adquate pour chaque grandeur (Longueur, Masse, Temprature, Vitesse). Vrifier lid choisi et convertir les autres champs selon ce dernier.

Aprs avoir rcuprer lid du champ en cours de saisie, il ne reste qu convertir les autres champs, dans cet exemple la grandeur sectionne est longueur et la valeur 10 est affecte au deuxime champ, la conversion doit se faire automatiquement. On a choisi le deuxime champ, donc lid du champ est 1 et puisque la grandeur choisie est Longueur, lid 1 va correspondre Miles, il ne reste qu convertir la valeur 10 Miles saisie en Mtre et en Kilomtre laide des relations mentionnes en dessus et les affecter aux deux autres champs.

Travail faire :
1. 2. 3. 4. 5. 6. Cration dune application Java : ConvertisseurApp. Ajout de la classe JFrame : Convertisseur (qui hrite de la classe JFrame). Ajout de deux classes internes pour couter les vnements des JButton et des JTextField. Utilisez les mthodes adquates afin de bien grouper les boutons, ainsi que le reste des objets. Utilisez des boucles pour ajouter chaque objet la classe adquate dcoute. Crez une mthode de conversion, que vous devez appeler dans le corps de la mthode keyReleased de la classe dcoute des JTextField.

TP en Java | Mr. Mohammed Rda Ouassini | Licence gnie informatique | Facult des Sciences et Techniques de Tanger

Page 4

Vous aimerez peut-être aussi