Exercices en Java (02-Introduction aux applets Java)

Sébastien ESTIENNE

Ce deuxième article est une introduction aux applets Java. Les applets sont des programmes en Java intégrables dans un document HTML. Le premier exercice affiche des informations sur un cercle à partir de son rayon. Le deuxième exercice demande à l'utilisateur les attributs d'un rectangle et le dessine. Le troisième exercice affiche différents ovales dans l'applet.

Les principales notions abordées sont les suivantes :

- Notion d'applet ;

- Utiliser les applets ;

- Dessiner dans un applet.

Pour faire et comprendre ces exercices, vous aurez besoin d'un certain nombre de notions sur le Java en rapport avec le chapitre. Pour cela, vous pouvez consulter les tutoriels java de developpez à l'adresse suivante : https://java.developpez.com/cours/

La documentation de l'API sur le site de Sun est aussi une mine d'or : http://java.sun.com/javase/6/docs/api/ ♪

- Titre : Exercices en Java (02-Introduction aux applets Java)

- Auteur : Sébastien ESTIENNE

- Parution : 29 mars 2007

- Mise à jour : 8 décembre 2008

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2007 Sébastien ESTIENNE. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Cercle

- I-1. Énoncé

- I-2. Aperçu

- I-3. Démonstration

- I-4. Solution

- II. Rectangle

- II-1. Énoncé

- II-2. Aperçu

- II-3. Démonstration

- II-4. Solution

- III. Ovale

- III-1. Énoncé

- III-2. Aperçu

- III-3. Démonstration

- III-4. Solution

- IV. Remerciements

I - Cercle

I-1 - Énoncé

Écrire un applet qui demande à l'utilisateur de saisir le rayon d'un cercle (en virgule flottante). L'applet doit ensuite afficher le diamètre du cercle(2 x R), la circonférence(2 x PI x R) du cercle et l'aire du cercle(PI x R x R). Vous pouvez utiliser la constante Math.PI définie dans le package java.lang.

Classes de l'API utilisées :

- java.awt.Color

- java.awt.Graphics

- java.text.NumberFormat

- javax.swing.JApplet

- javax.swing.JOptionPane

I-2 - Aperçu

Aperçu du résultat.

I-3 - Démonstration

Lancer l'applet.

I-4 - Solution

Cercle.java

1. /*

2. * Fichier: Cercle.java

3. * Crée le: 02 décembre 2006.

4. * Modifié: 7 juillet 2007.

5. * Auteurs: Sébastien ESTIENNE.

6. * SiteWeb: http://www.prog-info.org/

7. *

8. * This program is free software; you can redistribute it and/or modify

9. * it under the terms of the GNU General Public License as published by

10. * the Free Software Foundation; either version 2 of the License, or

11. * (at your option) any later version.

12. *

13. * This program is distributed in the hope that it will be useful,

14. * but WITHOUT ANY WARRANTY; without even the implied warranty of

15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

16. * GNU General Public License for more details.

17. *

18. * You should have received a copy of the GNU General Public License

19. * along with this program; if not, write to the Free Software

20. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

21. */

23. package chapitre2;

27. import java.awt.Color;

28. import java.awt.Graphics;

29. import java.text.NumberFormat;

31. import javax.swing.JApplet;

32. import javax.swing.JOptionPane;

36. /**

37. * <p>Affiche un cercle à l'écran.</p>

38. * @author Sébastien ESTIENNE.

39. */

40. public class Cercle extends JApplet

41. {

42. /**

43. * <p>Serial version UID.</p>

44. */

45. private static final long serialVersionUID = 1L;

47. /** Le diamètre du cercle. */

48. private double diametre;

50. /** La circonférence du cercle. */

51. private double circonference;

53. /** L'aire du cercle. */

54. private double aire;

57. /**

58. * <p>Initialise l'applet avec les valeurs de l'utilisateur.</p>

59. */

60. @Override

61. public void init()

62. {

63. // Le rayon au format chaine entré par l'utilisateur.

64. String sRayon = "";

66. // Le rayon du cercle.

67. double rayon = 0;

69. // Demander le rayon du cercle à l'utilisateur.

70. sRayon = JOptionPane.showInputDialog("Entrez la valeur du rayon du cercle :");

72. // Convertir le rayon de String en double.

73. try

74. {

75. rayon = Double.parseDouble(sRayon);

76. }

77. // Si la valeur n'est pas un nombre, cela génère exception qui implique un traitement

78. // particulier.

79. catch(Exception e)

80. {

81. // Afficher le message d'erreur.

82. JOptionPane.showMessageDialog(null,

83. "La valeur du rayon n'est pas un nombre. Le rayon est initialisé à 0.", "Erreur",

84. JOptionPane.ERROR_MESSAGE);

86. // Initialisation du rayon à 0.

87. rayon = 0;

88. }

90. // Calculer le diamètre du cercle.

91. this.diametre = 2 * rayon;

93. // Calculer la circonférence du cercle.

94. this.circonference = 2 * Math.PI * rayon;

96. // Calculer l'aire du cercle.

97. this.aire = Math.PI * rayon * rayon;

98. }

101. /**

102. * <p>Dessine le résultat sur l'arrière-plan de l'applet.</p>

103. * @param g La fenêtre graphique spécifiée.

104. */

105. @Override

106. public void paint(Graphics g)

107. {

108. // Vide le contenu de la fenêtre.

109. g.setColor(Color.WHITE);

110. g.fillRect(0, 0, getWidth(), getHeight());

112. // Définit la couleur courante.

113. g.setColor(Color.BLACK);

115. // Formatteur de nombres.

116. NumberFormat f = NumberFormat.getInstance();

117. f.setMaximumFractionDigits(2);

119. // Dessiner les résultats dans une String en (25,25).

120. g.drawString("Le diamètre du cercle est : " + f.format(this.diametre) + ".", 25, 25);

122. // Dessiner les résultats dans une String en (25,40).

123. g.drawString("La circonférence du cercle est :  " + f.format(this.circonference) + ".", 25,

124. 40);

126. // Dessiner les résultats dans une String en (25,55).

127. g.drawString("L'aire du cercle est :  " + f.format(this.aire) + ".", 25, 55);

128. }

129. }

II - Rectangle

II-1 - Énoncé

Écrire un applet qui demande à l'utilisateur de saisir les 4 arguments de la méthode drawRect.
L'applet doit ensuite afficher un rectangle avec les 4 valeurs entrées.
Méthode de la classe Graphics : drawRect(int x, int y, int width, int height).

Classes de l'API utilisées :

- java.awt.Color

- java.awt.Graphics

- javax.swing.JApplet

- javax.swing.JOptionPane

II-2 - Aperçu

Aperçu du résultat.

II-3 - Démonstration

Lancer l'applet.

II-4 - Solution

Rectangle.java

1. /*

2. * Fichier: Rectangle.java

3. * Crée le: 02 décembre 2006.

4. * Modifié: 7 juillet 2007.

5. * Auteurs: Sébastien ESTIENNE.

6. * SiteWeb: http://www.prog-info.org/

7. *

8. * This program is free software; you can redistribute it and/or modify

9. * it under the terms of the GNU General Public License as published by

10. * the Free Software Foundation; either version 2 of the License, or

11. * (at your option) any later version.

12. *

13. * This program is distributed in the hope that it will be useful,

14. * but WITHOUT ANY WARRANTY; without even the implied warranty of

15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

16. * GNU General Public License for more details.

17. *

18. * You should have received a copy of the GNU General Public License

19. * along with this program; if not, write to the Free Software

20. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

21. */

23. package chapitre2;

27. import java.awt.Color;

28. import java.awt.Graphics;

30. import javax.swing.JApplet;

31. import javax.swing.JOptionPane;

35. /**

36. * <p>Affiche un rectangle à l'écran.</p>

37. * @author Sébastien ESTIENNE.

38. */

39. public class Rectangle extends JApplet

40. {

41. /**

42. * <p>Serial version UID.</p>

43. */

44. private static final long serialVersionUID = 1L;

46. /** Abscisse. */

47. private int x;

49. /** Ordonnée. */

50. private int y;

52. /** Largeur du rectangle. */

53. private int l;

55. /** Hauteur du rectangle. */

56. private int h;

59. /**

60. * <p>Initialise l'applet avec les valeurs de l'utilisateur.</p>

61. */

62. @Override

63. public void init()

64. {

65. // Chaine de caractères entrée par l'utilisateur. (abscisse, ordonnée, largeur, hauteur).

66. String sx, sy, sl, sh;

68. // Demander les valeurs du rectangle à l'utilisateur.

69. sx = JOptionPane

70. .showInputDialog("Entrez la valeur de l'abscisse du coin haut gauche du rectangle :");

71. sy = JOptionPane

72. .showInputDialog("Entrez la valeur de l'ordonnée du coin haut gauche du rectangle :");

73. sl = JOptionPane.showInputDialog("Entrez la valeur de la largeur du rectangle :");

74. sh = JOptionPane.showInputDialog("Entrez la valeur de la hauteur du rectangle :");

76. // Convertir les valeurs du rectangle saisies par l'utilisateur de String en int.

77. try

78. {

79. this.x = Integer.parseInt(sx);

80. this.y = Integer.parseInt(sy);

81. this.l = Integer.parseInt(sl);

82. this.h = Integer.parseInt(sh);

83. }

84. // Si une des valeurs n'est pas un nombre, cela génère exception qui implique un traitement

85. // particulier.

86. catch(NumberFormatException e)

87. {

88. // Afficher le message d'erreur.

89. JOptionPane.showMessageDialog(null,

90. "Erreur, au moins une des valeurs n'est pas un nombre entier;"

91. + "Toutes les valeurs seront initialisées à 0.", "Erreur",

92. JOptionPane.ERROR_MESSAGE);

94. // Initialise les valeurs à 0.

95. this.x = 0;

96. this.y = 0;

97. this.l = 0;

98. this.h = 0;

99. }

100. }

103. /**

104. * <p>Dessine le résultat sur l'arrière-plan de l'applet.</p>

105. * @param g La fenêtre graphique spécifiée.

106. */

107. @Override

108. public void paint(Graphics g)

109. {

110. // Vide le contenu de la fenêtre.

111. g.setColor(Color.WHITE);

112. g.fillRect(0, 0, getWidth(), getHeight());

114. // Définit la couleur courante.

115. g.setColor(Color.BLACK);

117. // Dessiner le rectangle à partir des données entrées par l'utilisateur.

118. g.drawRect(this.x, this.y, this.l, this.h);

119. }

120. }

III - Ovale

III-1 - Énoncé

Écrire un applet qui affiche plusieurs ovales de tailles et de formes différentes.
Méthode de la classe Graphics : drawOval(int x, int y, int width, int height).

Classes de l'API utilisées :

- java.awt.Color

- java.awt.Graphics

- javax.swing.JApplet

III-2 - Aperçu

Aperçu du résultat.

III-3 - Démonstration

Lancer l'applet.

III-4 - Solution

Ovale.java

1. /*

2. * Fichier: Ovale.java

3. * Crée le: 02 décembre 2006.

4. * Modifié: 7 juillet 2007.

5. * Auteurs: Sébastien ESTIENNE.

6. * SiteWeb: http://www.prog-info.org/

7. *

8. * This program is free software; you can redistribute it and/or modify

9. * it under the terms of the GNU General Public License as published by

10. * the Free Software Foundation; either version 2 of the License, or

11. * (at your option) any later version.

12. *

13. * This program is distributed in the hope that it will be useful,

14. * but WITHOUT ANY WARRANTY; without even the implied warranty of

15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

16. * GNU General Public License for more details.

17. *

18. * You should have received a copy of the GNU General Public License

19. * along with this program; if not, write to the Free Software

20. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

21. */

23. package chapitre2;

27. import java.awt.Color;

28. import java.awt.Graphics;

30. import javax.swing.JApplet;

34. /**

35. * <p>Affiche plusieurs ovales à l'écran.</p>

36. * @author Sébastien ESTIENNE.

37. */

38. public class Ovale extends JApplet

39. {

40. /**

41. * <p>Serial version UID.</p>

42. */

43. private static final long serialVersionUID = 1L;

46. /**

47. * <p>Dessine les résultats sur l'arrière-plan de l'applet.</p>

48. * @param g La fenêtre graphique spécifiée.

49. */

50. @Override

51. public void paint(Graphics g)

52. {

53. // Vide le contenu de la fenêtre.

54. g.setColor(Color.WHITE);

55. g.fillRect(0, 0, getWidth(), getHeight());

57. // Définit la couleur courante.

58. g.setColor(Color.BLACK);

60. // Dessiner un ovale à (10,10) et de dimensions (50,50).

61. g.drawOval(20, 20, 50, 50);

63. // Dessiner un ovale à (100,10) et de dimensions (100,60).

64. g.drawOval(100, 20, 100, 60);

66. // Dessiner un ovale à (10,100) et de dimensions (5=30,90).

67. g.drawOval(20, 100, 30, 90);

69. // Dessiner 4 ovales.

70. g.drawOval(150, 150, 150, 100);

71. g.drawOval(150, 150, 130, 80);

72. g.drawOval(150, 150, 110, 60);

73. g.drawOval(150, 150, 90, 40);

74. }

75. }

IV - Remerciements

Je tiens à remercier vbrabant, Ricky81 pour les conseils, remarques et relectures.
Je remercie aussi www.developpez.com me permettant de publier cet article et Nono40 pour ses outils.