Applets By Korteby Farouk Cours Java Avancée
Sommaire Qu'est-ce qu'une applet ? Applets et sécurité… Du coté HTML Du coté Java Un peu de pratique
Qu'est-ce qu'une applet ? By Korteby Farouk Cours Java Avancée
Qu'est-ce qu'une applet ? Une applet est une application Java : C'est une classe Java compilée sous forme debytecode  Elle dérive d'une classe mère :  java.applet.Applet pour Java 1 (supporté nativement par les navigateurs compatibles Java)  javax.swing.Japplet pour Java 2 (nécessite un plug-in Java 2)  Elle est exécutée par une machine virtuelle Java(JVM)
Qu'est-ce qu'une applet ? Elle possède néanmoins certaines particularités : Elle réside sur un serveur web  Elle est véhiculée par une page HTML qui contient son URL  Le navigateur Java-compatible qui charge cette page télécharge alors le code de l'applet (.class ou .jar) et l'exécute grâce à sa propre JVM ou une JVM extérieure dans le cas d'un plug-in
Qu'est-ce qu'une applet ? 4. Affichage de la page figée (avec hyperliens) Client Web Serveur Web Pages Web 1. Demande d’URL 3. Transmission de la page 2. Accès aux fichiers
Qu'est-ce qu'une applet ? 4. Affichage de la page, initialisation puis démarrage des applets Client Web Serveur Web 1. Demande d’URL 3. Transmission de la page 2. Accès aux fichiers Pages Web Fichiers .class
Applets et sécurité… By Korteby Farouk Cours Java Avancée
Applets et sécurité… Les conditions de sécurités sont plus strictes que pour une application ordinaire, et sont gérées par le navigateur lui-même :  Pas d'accès au système de fichier de l'hôte  Pas d'exécution de code natif sur l'hôte  Communication restreinte avec le serveur d'origine  La signature du code permet néanmoins de l'authentifier et de gérer ce problème
Applets et sécurité… Le client peut accorder des droits aux applets signées par des personnes de confiance Le mécanisme des clefs privées et publiques garantit la fiabilité
Applets et sécurité… Attribués par VeriSign, Thawte, … à une société Prix: au moins 150 $ par an Garantissent l’origine et l’intégrité d’un programme (*.exe), d’une applet (*.class) ou d’une archive (*.jar) Utilisent une connexion sécurisée (SSL) avec transmission de données cryptées
Applets et sécurité… Qu'est-ce qu'une applet ?
Du coté HTML By Korteby Farouk Cours Java Avancée
Du coté HTML Les balises <APPLET> , <OBJECT> Elle sert à invoquer l'applet au sein de la page web,dans le cas d'une applet exécutée nativement.  Dans le cas d'une applet exécutée via un plug-in, c'est la balise <EMBED> ou <OBJECT> qui est utilisée, selon le navigateur.
Du coté HTML Utilisation : <APPLET  code=&quot;HelloWord&quot;  width=&quot;300&quot;  height=&quot;200&quot; >  Texte de remplacement pour les navigateurs n'interprétant pas cette balise </APPLET>
Du coté HTML Utilisation : <OBJECT  code=&quot;HelloWord&quot;  width=&quot;300&quot;  height=&quot;200&quot; >  Texte de remplacement pour les navigateurs n'interprétant pas cette balise </OBJECT>
Du coté HTML Attributs : code=[chaine] (obligatoire) nom de la classe principale width=[entier] (obligatoire pour l'AppletViewer) dimension horizontale de l'applet, en pixels height=[entier] (obligatoire pour l'AppletViewer) dimension verticale de l'applet, en pixels hspace=[entier] espace horizontal autour de l'applet, en pixels vspace=[entier] espace vertical autour de l'applet, en pixels
Du coté HTML Attributs : codebase=[chaine] URL de base pour l'applet. Par défaut : le répertoire courant name=[chaine] nom de l'applet archive=[chaine] fichier archive contenant les classes de l'applet alt=[chaine] Texte affiché par les navigateurs interprétant la balise, mais n'affichant pas l'applet pour autant (en cours de chargement, support Java désactivé, etc...)
Du coté HTML La balise <PARAM> Elle sert à passer des arguments à l'applet à l'exécution, de la même façon que les arguments en ligne de commande d'une application.
Du coté HTML Utilisation : <APPLET code=&quot;HelloWord&quot;  width=&quot;300&quot; height=&quot;200&quot;>  <PARAM name=&quot;texte&quot;  value=&quot;Hello world !&quot;>  <PARAM name=&quot;occurences&quot; value=&quot;3&quot;> </APPLET>
Du coté Java By Korteby Farouk Cours Java Avancée
Du coté Java Du coté Java: Création Cycle de vie Récupération des paramètres Contexte de l'applet
Du coté Java Création Il faut dériver la super classe java.applet.Applet, comme n'importe quelle application Java : public class MyApplet extends java.applet.Applet {}
Du coté Java Cependant, on n'utilise ni de constructeur, ni de méthode main().  En effet, c'est le navigateur qui instancie l'applet à un moment non défini, alors que toutes les ressources nécessaires à son initialisation ne sont pas forcément encore disponible.  A la place, on utilise la méthode  init ().
Du coté Java Le comportement de l'applet est alors spécifié en surchargeant les méthodes:  init(), start(),  stop(),  destroy() et paint(Graphics gc)  héritées de la superclasse : java.applet.Applet
Du coté Java 2. Cycle de vie L'appel des méthodes:  init(),start(), stop() et destroy() par le navigateur constitue le cycle de vie de l'applet 
Du coté Java public void init() appelée une seule fois par le navigateur à l'initialisation de l'applet, lorsqu'elle est chargée public void start() appelée à chaque fois que l'applet devient visible public void stop() appelée à chaque fois que l'applet est masquée public void destroy() appelée une seule fois par le navigateur à la destruction de l'applet, lorsque la page HTML change
Du coté Java init() start() stop() destroy()
Du coté Java Récupération des paramètres La méthode  getParameter(StringparameterName)  permet de récupérer dans une chaine la valeur associée à un paramètre défini dans la page web par la balise <PARAM> vue précédement :
Du coté Java Pour une chaîne de caractère : String texte = getParameter(&quot;texte&quot;); Et Pour un entier : int occurences = (new Integer(getParameter(&quot;occurences&quot;))).intValue();
Du coté Java Contexte de l'applet La classe AppletContext d'accéder à des ressources externes à l'applet, telles que d'autres applets ou le navigateur lui-même.  La méthode getAppletContext() permet d'obtenir l'instance correspondant à l'applet courante, à laquelle on peut ensuite appliquer notamment les méthodes suivantes :
Du coté Java public java.util.Enumeration getApplets() retourne l'ensemble des autres applets de la page, sous la forme d'une énumération public java.applet.Applet getApplets( String appletName) retourne l'applet de la page portant le nom appletName
Du coté Java public void showDocument(java.net.URL url) demande au navigateur de charger la ressource désignée par l'URL url public showStatus(String status) affiche le message status dans la barre d'état du navigateur
Ateliers By Korteby Farouk Cours Java Avancée
Ateliers l'indispensable JDK  de SUN : Il contient un compilateur, un interpréteur, les classes de base, et d'autres outils.  la  documentation  sur les API, les outils Java fournis par Sun  Un Éditeur java :  JCreator Pro
Ateliers Avec le package : Java.AWT Applets; Composants de Base Son et Graphiques Composants Intermédiaires
Composants de Base By Korteby Farouk Cours Java Avancée
Composants de Base HelloWorld public class HelloWorld extends Applet { public void paint( Graphics g ) { g.drawString(&quot;Hello World&quot;,50,25); }  }
Composants de Base Label1: importer un HTML paramètre java g.drawString(this.getParameter(&quot;text&quot;),50,25); HTML <PARAM name=&quot;text&quot; value=&quot;Your text here&quot;>
Composants de Base Label2: importer plusieurs paramètres: private String getStrParam( String name, String defaultVal ) { String param = this.getParameter(name);   return param; } private int getIntParam( String name, int defaultVal ) { String param = this.getParameter(name); int i = Integer.parseInt( param );   return i; }
Composants de Base HTML <APPLET code=&quot;Label3.class&quot; width=150 height=50> <PARAM name=&quot;text&quot; value=&quot;Your text here&quot;> <PARAM name=&quot;x&quot; value=&quot;50&quot;> <PARAM name=&quot;y&quot; value=&quot;25&quot;> texte en cas de problème dans la jre </APPLET>
Composants de Base SampleFonts: Texte Styles et Polices g.setFont( new Font(&quot;TimesRoman&quot;,Font.PLAIN,14) ); g.drawString(&quot;TimesRoman Plain 14-point&quot;,x,y+=25); g.setFont( new Font(&quot;TimesRoman&quot;,Font.ITALIC,14) ); g.drawString(&quot;TimesRoman Italic 14-point&quot;,x,y+=15); g.setFont( new Font(&quot;TimesRoman&quot;,Font.BOLD,14) ); g.drawString(&quot;TimesRoman Bold 14-point&quot;,x,y+=15); g.setFont( new Font(&quot;TimesRoman&quot;, Font.ITALIC+Font.BOLD,14) ); g.drawString(&quot;TimesRoman BoldItalic 14-point&quot;,x,y+=15);
Composants de Base SampleButton:button avec événement Déclaration java.awt.Button button1; int presses = 0; Dans init() add( button1 = new java.awt.Button(&quot;Sample Button&quot;) );  Déclaration fonction Clique du button void Button_Clicked(Event event) { System.out.println(&quot;Sample Button presses == &quot; + ++presses);  showStatus(&quot;Sample Button presses == &quot; +  presses); }
Composants de Base SampleButton:button avec événement Gestion d’événement public boolean handleEvent(Event event) { if (event.target == button1 &&  event.id  == Event.ACTION_EVENT ){ Button_Clicked(event); return true; } return super.handleEvent(event); }
Composants de Base SampleTextField1 Déclaration TextField output; TextField input; Dans init() output = new TextField(&quot;ereh txet epyT&quot;,40); add(output); input  = new TextField(&quot;Type text here&quot;,40); add(input);
Composants de Base SampleTextField1 Gestion d’événement public boolean keyDown( Event evt, int key ) { boolean result = super.keyDown( evt, key ); String s = input.getText(); output.setText(s); return result; }
Composants de Base SampleChoice: liste de choix Dans la méthode : init()  Choice c = new Choice(); c.addItem (&quot;Choice1&quot;); c.addItem (&quot;Choice2&quot;); c.addItem (&quot;Choice3&quot;); add(c);
Composants de Base SampleChoice: liste de choix La Gestion d’événements: public boolean action(Event e, Object o) { if (e.target instanceof Choice) {   Choice c  = (Choice)e.target; int  index = c.getSelectedIndex(); String s  = c.getSelectedItem();   showStatus(s); return true; } return false; }
Composants de Base SampleCheckboxes1: Buttons radios Déclaration: TextField output; Checkbox  box2; Checkbox  box1; Checkbox  box3; La méthode : init() setLayout( new GridLayout( 4, 1 ) ); output = new TextField(&quot;balloon&quot;,40);  add(output); box1  = new Checkbox( &quot;Big&quot;);  add(box1); box2  = new Checkbox( &quot;Red&quot;);  add(box2); box3  = new Checkbox( &quot;Shiny&quot;);  add(box3); output.setEditable(false);
Composants de Base Gestion d’événements public boolean action( Event e, Object what ) { boolean result = super.action( e, what ); if (e.target == box1 ||  e.target == box2 ||  e.target == box3 ){ String s1 = (box1.getState() ? &quot;big &quot;  : &quot;&quot;); String s2 = (box2.getState() ? &quot;red &quot;  : &quot;&quot;); String s3 = (box3.getState() ? &quot;shiny &quot; : &quot;&quot;); String s  = s1 + s2 + s3 + &quot;balloon&quot;; output.setText(s); } return result; }
Composants de Base SampleScrollbars1 Déclaration: Scrollbar x; Scrollbar y; Scrollbar width; Scrollbar height;  Scrollbar startAngle; Scrollbar arcAngle; La methode init(); x = new Scrollbar(Scrollbar.VERTICAL,128,64, 0,255);  add(x); y = new Scrollbar(Scrollbar.VERTICAL,128,64,80,255);  add(y); width = new Scrollbar(Scrollbar.VERTICAL,128,64, 0,255); add(width); height = new Scrollbar(Scrollbar.VERTICAL,128,64, 0,255); add(height);  startAngle = new Scrollbar(Scrollbar.VERTICAL,128,64, 0,255);  add(startAngle); arcAngle  = new Scrollbar(Scrollbar.VERTICAL,128,64,10,360);  add(arcAngle);
Composants de Base Gestion d’événement public boolean handleEvent( Event e ) { boolean result = super.handleEvent(e); if (e.target == x ||  e.target == y ||  e.target == width ||  e.target == height   ||  e.target == startAngle ||  e.target == arcAngle ){ paint( getGraphics() ); } return result; }
Composants de Base La méthode paint() Cette méthode permet d'afficher le contenu de l'applet à l'écran.  Ce rafraîchissement peut être provoqué par le navigateur ou par le système d'exploitation.  La méthode repaint() force l'utilisation de la méthode paint().
Composants de Base La Méthode paint(): public void paint( Graphics g ) { g.clearRect( 0, 60, 300, 240 ); g.fillArc( x.getValue(), y.getValue(), width.getValue(), height.getValue(), startAngle.getValue(), arcAngle.getValue() ); }
Son et Graphiques By Korteby Farouk Cours Java Avancée
Son et Graphiques SampleGif: dessin d’une image Déclaration Image im; La méthode init() im = getImage(getCodeBase(), &quot;image.gif&quot;);
Son et Graphiques La methode Paint() g.drawImage(im, 0, 0, this);
Son et Graphiques SampleSound1: jouer du son Déclaration: String s; AudioClip ac; La methode init() s = getParameter(&quot;SON&quot;); ac = getAudioClip(getDocumentBase(), s ); ac.play(); <> ac.loop();
Son et Graphiques HTML <applet code=&quot;Son.class&quot;  width=200 height=50>  <param name=&quot;SON&quot; value=&quot;son.au&quot;> Votre navigateur n'est pas compatible Java !  </applet>
Composants Intermédiaires By Korteby Farouk Cours Java Avancée
Composants Intermédiaires SampleFrame1 : exemple de frame déclaration static final int x  = 100; static final int y  = 100; static final int width  = 300; static final int height = 300; Frame  frame;
Composants Intermédiaires SampleFrame1 : exemple de frame La méthode init() frame  = new Frame(); frame.setResizable(true); //Par  Default frame.setTitle(&quot;SampleFrame1 Applet&quot;); frame.reshape( x,y, width,height ); frame.show();
Composants Intermédiaires SampleMenu1 : exemple de menu Déclaration Frame  frame; MenuBar menuBar; Menu file;
Composants Intermédiaires SampleMenu1 : exemple de menu La méthode init() frame  = new Frame(); menuBar = new MenuBar(); file  = new Menu(&quot;file&quot;,true); menuBar.add(file); file.add(&quot;Quit&quot;); frame.setMenuBar(menuBar); frame.show();
Merci de votre Attention By Korteby Farouk Cours Java Avancée -Applets-
Pour informations Complémentaires vous pouvez consultez: http://www.jmdoudoux.fr/ didacticiels : ‘Développons en Java’ et   ‘Développons en Java avec Eclipse’ http://penserenjava.free.fr/   Thinking in java traduit en française By Korteby Farouk Cours Java Avancée -Applets-

Applets

  • 1.
    Applets By KortebyFarouk Cours Java Avancée
  • 2.
    Sommaire Qu'est-ce qu'uneapplet ? Applets et sécurité… Du coté HTML Du coté Java Un peu de pratique
  • 3.
    Qu'est-ce qu'une applet? By Korteby Farouk Cours Java Avancée
  • 4.
    Qu'est-ce qu'une applet? Une applet est une application Java : C'est une classe Java compilée sous forme debytecode Elle dérive d'une classe mère : java.applet.Applet pour Java 1 (supporté nativement par les navigateurs compatibles Java) javax.swing.Japplet pour Java 2 (nécessite un plug-in Java 2) Elle est exécutée par une machine virtuelle Java(JVM)
  • 5.
    Qu'est-ce qu'une applet? Elle possède néanmoins certaines particularités : Elle réside sur un serveur web Elle est véhiculée par une page HTML qui contient son URL Le navigateur Java-compatible qui charge cette page télécharge alors le code de l'applet (.class ou .jar) et l'exécute grâce à sa propre JVM ou une JVM extérieure dans le cas d'un plug-in
  • 6.
    Qu'est-ce qu'une applet? 4. Affichage de la page figée (avec hyperliens) Client Web Serveur Web Pages Web 1. Demande d’URL 3. Transmission de la page 2. Accès aux fichiers
  • 7.
    Qu'est-ce qu'une applet? 4. Affichage de la page, initialisation puis démarrage des applets Client Web Serveur Web 1. Demande d’URL 3. Transmission de la page 2. Accès aux fichiers Pages Web Fichiers .class
  • 8.
    Applets et sécurité…By Korteby Farouk Cours Java Avancée
  • 9.
    Applets et sécurité…Les conditions de sécurités sont plus strictes que pour une application ordinaire, et sont gérées par le navigateur lui-même : Pas d'accès au système de fichier de l'hôte Pas d'exécution de code natif sur l'hôte Communication restreinte avec le serveur d'origine La signature du code permet néanmoins de l'authentifier et de gérer ce problème
  • 10.
    Applets et sécurité…Le client peut accorder des droits aux applets signées par des personnes de confiance Le mécanisme des clefs privées et publiques garantit la fiabilité
  • 11.
    Applets et sécurité…Attribués par VeriSign, Thawte, … à une société Prix: au moins 150 $ par an Garantissent l’origine et l’intégrité d’un programme (*.exe), d’une applet (*.class) ou d’une archive (*.jar) Utilisent une connexion sécurisée (SSL) avec transmission de données cryptées
  • 12.
    Applets et sécurité…Qu'est-ce qu'une applet ?
  • 13.
    Du coté HTMLBy Korteby Farouk Cours Java Avancée
  • 14.
    Du coté HTMLLes balises <APPLET> , <OBJECT> Elle sert à invoquer l'applet au sein de la page web,dans le cas d'une applet exécutée nativement. Dans le cas d'une applet exécutée via un plug-in, c'est la balise <EMBED> ou <OBJECT> qui est utilisée, selon le navigateur.
  • 15.
    Du coté HTMLUtilisation : <APPLET code=&quot;HelloWord&quot; width=&quot;300&quot; height=&quot;200&quot; > Texte de remplacement pour les navigateurs n'interprétant pas cette balise </APPLET>
  • 16.
    Du coté HTMLUtilisation : <OBJECT code=&quot;HelloWord&quot; width=&quot;300&quot; height=&quot;200&quot; > Texte de remplacement pour les navigateurs n'interprétant pas cette balise </OBJECT>
  • 17.
    Du coté HTMLAttributs : code=[chaine] (obligatoire) nom de la classe principale width=[entier] (obligatoire pour l'AppletViewer) dimension horizontale de l'applet, en pixels height=[entier] (obligatoire pour l'AppletViewer) dimension verticale de l'applet, en pixels hspace=[entier] espace horizontal autour de l'applet, en pixels vspace=[entier] espace vertical autour de l'applet, en pixels
  • 18.
    Du coté HTMLAttributs : codebase=[chaine] URL de base pour l'applet. Par défaut : le répertoire courant name=[chaine] nom de l'applet archive=[chaine] fichier archive contenant les classes de l'applet alt=[chaine] Texte affiché par les navigateurs interprétant la balise, mais n'affichant pas l'applet pour autant (en cours de chargement, support Java désactivé, etc...)
  • 19.
    Du coté HTMLLa balise <PARAM> Elle sert à passer des arguments à l'applet à l'exécution, de la même façon que les arguments en ligne de commande d'une application.
  • 20.
    Du coté HTMLUtilisation : <APPLET code=&quot;HelloWord&quot; width=&quot;300&quot; height=&quot;200&quot;> <PARAM name=&quot;texte&quot; value=&quot;Hello world !&quot;> <PARAM name=&quot;occurences&quot; value=&quot;3&quot;> </APPLET>
  • 21.
    Du coté JavaBy Korteby Farouk Cours Java Avancée
  • 22.
    Du coté JavaDu coté Java: Création Cycle de vie Récupération des paramètres Contexte de l'applet
  • 23.
    Du coté JavaCréation Il faut dériver la super classe java.applet.Applet, comme n'importe quelle application Java : public class MyApplet extends java.applet.Applet {}
  • 24.
    Du coté JavaCependant, on n'utilise ni de constructeur, ni de méthode main(). En effet, c'est le navigateur qui instancie l'applet à un moment non défini, alors que toutes les ressources nécessaires à son initialisation ne sont pas forcément encore disponible. A la place, on utilise la méthode init ().
  • 25.
    Du coté JavaLe comportement de l'applet est alors spécifié en surchargeant les méthodes: init(), start(), stop(), destroy() et paint(Graphics gc) héritées de la superclasse : java.applet.Applet
  • 26.
    Du coté Java2. Cycle de vie L'appel des méthodes: init(),start(), stop() et destroy() par le navigateur constitue le cycle de vie de l'applet 
  • 27.
    Du coté Javapublic void init() appelée une seule fois par le navigateur à l'initialisation de l'applet, lorsqu'elle est chargée public void start() appelée à chaque fois que l'applet devient visible public void stop() appelée à chaque fois que l'applet est masquée public void destroy() appelée une seule fois par le navigateur à la destruction de l'applet, lorsque la page HTML change
  • 28.
    Du coté Javainit() start() stop() destroy()
  • 29.
    Du coté JavaRécupération des paramètres La méthode getParameter(StringparameterName) permet de récupérer dans une chaine la valeur associée à un paramètre défini dans la page web par la balise <PARAM> vue précédement :
  • 30.
    Du coté JavaPour une chaîne de caractère : String texte = getParameter(&quot;texte&quot;); Et Pour un entier : int occurences = (new Integer(getParameter(&quot;occurences&quot;))).intValue();
  • 31.
    Du coté JavaContexte de l'applet La classe AppletContext d'accéder à des ressources externes à l'applet, telles que d'autres applets ou le navigateur lui-même. La méthode getAppletContext() permet d'obtenir l'instance correspondant à l'applet courante, à laquelle on peut ensuite appliquer notamment les méthodes suivantes :
  • 32.
    Du coté Javapublic java.util.Enumeration getApplets() retourne l'ensemble des autres applets de la page, sous la forme d'une énumération public java.applet.Applet getApplets( String appletName) retourne l'applet de la page portant le nom appletName
  • 33.
    Du coté Javapublic void showDocument(java.net.URL url) demande au navigateur de charger la ressource désignée par l'URL url public showStatus(String status) affiche le message status dans la barre d'état du navigateur
  • 34.
    Ateliers By KortebyFarouk Cours Java Avancée
  • 35.
    Ateliers l'indispensable JDK de SUN : Il contient un compilateur, un interpréteur, les classes de base, et d'autres outils. la documentation sur les API, les outils Java fournis par Sun Un Éditeur java : JCreator Pro
  • 36.
    Ateliers Avec lepackage : Java.AWT Applets; Composants de Base Son et Graphiques Composants Intermédiaires
  • 37.
    Composants de BaseBy Korteby Farouk Cours Java Avancée
  • 38.
    Composants de BaseHelloWorld public class HelloWorld extends Applet { public void paint( Graphics g ) { g.drawString(&quot;Hello World&quot;,50,25); } }
  • 39.
    Composants de BaseLabel1: importer un HTML paramètre java g.drawString(this.getParameter(&quot;text&quot;),50,25); HTML <PARAM name=&quot;text&quot; value=&quot;Your text here&quot;>
  • 40.
    Composants de BaseLabel2: importer plusieurs paramètres: private String getStrParam( String name, String defaultVal ) { String param = this.getParameter(name); return param; } private int getIntParam( String name, int defaultVal ) { String param = this.getParameter(name); int i = Integer.parseInt( param ); return i; }
  • 41.
    Composants de BaseHTML <APPLET code=&quot;Label3.class&quot; width=150 height=50> <PARAM name=&quot;text&quot; value=&quot;Your text here&quot;> <PARAM name=&quot;x&quot; value=&quot;50&quot;> <PARAM name=&quot;y&quot; value=&quot;25&quot;> texte en cas de problème dans la jre </APPLET>
  • 42.
    Composants de BaseSampleFonts: Texte Styles et Polices g.setFont( new Font(&quot;TimesRoman&quot;,Font.PLAIN,14) ); g.drawString(&quot;TimesRoman Plain 14-point&quot;,x,y+=25); g.setFont( new Font(&quot;TimesRoman&quot;,Font.ITALIC,14) ); g.drawString(&quot;TimesRoman Italic 14-point&quot;,x,y+=15); g.setFont( new Font(&quot;TimesRoman&quot;,Font.BOLD,14) ); g.drawString(&quot;TimesRoman Bold 14-point&quot;,x,y+=15); g.setFont( new Font(&quot;TimesRoman&quot;, Font.ITALIC+Font.BOLD,14) ); g.drawString(&quot;TimesRoman BoldItalic 14-point&quot;,x,y+=15);
  • 43.
    Composants de BaseSampleButton:button avec événement Déclaration java.awt.Button button1; int presses = 0; Dans init() add( button1 = new java.awt.Button(&quot;Sample Button&quot;) ); Déclaration fonction Clique du button void Button_Clicked(Event event) { System.out.println(&quot;Sample Button presses == &quot; + ++presses); showStatus(&quot;Sample Button presses == &quot; + presses); }
  • 44.
    Composants de BaseSampleButton:button avec événement Gestion d’événement public boolean handleEvent(Event event) { if (event.target == button1 && event.id == Event.ACTION_EVENT ){ Button_Clicked(event); return true; } return super.handleEvent(event); }
  • 45.
    Composants de BaseSampleTextField1 Déclaration TextField output; TextField input; Dans init() output = new TextField(&quot;ereh txet epyT&quot;,40); add(output); input = new TextField(&quot;Type text here&quot;,40); add(input);
  • 46.
    Composants de BaseSampleTextField1 Gestion d’événement public boolean keyDown( Event evt, int key ) { boolean result = super.keyDown( evt, key ); String s = input.getText(); output.setText(s); return result; }
  • 47.
    Composants de BaseSampleChoice: liste de choix Dans la méthode : init() Choice c = new Choice(); c.addItem (&quot;Choice1&quot;); c.addItem (&quot;Choice2&quot;); c.addItem (&quot;Choice3&quot;); add(c);
  • 48.
    Composants de BaseSampleChoice: liste de choix La Gestion d’événements: public boolean action(Event e, Object o) { if (e.target instanceof Choice) { Choice c = (Choice)e.target; int index = c.getSelectedIndex(); String s = c.getSelectedItem(); showStatus(s); return true; } return false; }
  • 49.
    Composants de BaseSampleCheckboxes1: Buttons radios Déclaration: TextField output; Checkbox box2; Checkbox box1; Checkbox box3; La méthode : init() setLayout( new GridLayout( 4, 1 ) ); output = new TextField(&quot;balloon&quot;,40); add(output); box1 = new Checkbox( &quot;Big&quot;); add(box1); box2 = new Checkbox( &quot;Red&quot;); add(box2); box3 = new Checkbox( &quot;Shiny&quot;); add(box3); output.setEditable(false);
  • 50.
    Composants de BaseGestion d’événements public boolean action( Event e, Object what ) { boolean result = super.action( e, what ); if (e.target == box1 || e.target == box2 || e.target == box3 ){ String s1 = (box1.getState() ? &quot;big &quot; : &quot;&quot;); String s2 = (box2.getState() ? &quot;red &quot; : &quot;&quot;); String s3 = (box3.getState() ? &quot;shiny &quot; : &quot;&quot;); String s = s1 + s2 + s3 + &quot;balloon&quot;; output.setText(s); } return result; }
  • 51.
    Composants de BaseSampleScrollbars1 Déclaration: Scrollbar x; Scrollbar y; Scrollbar width; Scrollbar height; Scrollbar startAngle; Scrollbar arcAngle; La methode init(); x = new Scrollbar(Scrollbar.VERTICAL,128,64, 0,255); add(x); y = new Scrollbar(Scrollbar.VERTICAL,128,64,80,255); add(y); width = new Scrollbar(Scrollbar.VERTICAL,128,64, 0,255); add(width); height = new Scrollbar(Scrollbar.VERTICAL,128,64, 0,255); add(height); startAngle = new Scrollbar(Scrollbar.VERTICAL,128,64, 0,255); add(startAngle); arcAngle = new Scrollbar(Scrollbar.VERTICAL,128,64,10,360); add(arcAngle);
  • 52.
    Composants de BaseGestion d’événement public boolean handleEvent( Event e ) { boolean result = super.handleEvent(e); if (e.target == x || e.target == y || e.target == width || e.target == height || e.target == startAngle || e.target == arcAngle ){ paint( getGraphics() ); } return result; }
  • 53.
    Composants de BaseLa méthode paint() Cette méthode permet d'afficher le contenu de l'applet à l'écran. Ce rafraîchissement peut être provoqué par le navigateur ou par le système d'exploitation. La méthode repaint() force l'utilisation de la méthode paint().
  • 54.
    Composants de BaseLa Méthode paint(): public void paint( Graphics g ) { g.clearRect( 0, 60, 300, 240 ); g.fillArc( x.getValue(), y.getValue(), width.getValue(), height.getValue(), startAngle.getValue(), arcAngle.getValue() ); }
  • 55.
    Son et GraphiquesBy Korteby Farouk Cours Java Avancée
  • 56.
    Son et GraphiquesSampleGif: dessin d’une image Déclaration Image im; La méthode init() im = getImage(getCodeBase(), &quot;image.gif&quot;);
  • 57.
    Son et GraphiquesLa methode Paint() g.drawImage(im, 0, 0, this);
  • 58.
    Son et GraphiquesSampleSound1: jouer du son Déclaration: String s; AudioClip ac; La methode init() s = getParameter(&quot;SON&quot;); ac = getAudioClip(getDocumentBase(), s ); ac.play(); <> ac.loop();
  • 59.
    Son et GraphiquesHTML <applet code=&quot;Son.class&quot; width=200 height=50> <param name=&quot;SON&quot; value=&quot;son.au&quot;> Votre navigateur n'est pas compatible Java ! </applet>
  • 60.
    Composants Intermédiaires ByKorteby Farouk Cours Java Avancée
  • 61.
    Composants Intermédiaires SampleFrame1: exemple de frame déclaration static final int x = 100; static final int y = 100; static final int width = 300; static final int height = 300; Frame frame;
  • 62.
    Composants Intermédiaires SampleFrame1: exemple de frame La méthode init() frame = new Frame(); frame.setResizable(true); //Par Default frame.setTitle(&quot;SampleFrame1 Applet&quot;); frame.reshape( x,y, width,height ); frame.show();
  • 63.
    Composants Intermédiaires SampleMenu1: exemple de menu Déclaration Frame frame; MenuBar menuBar; Menu file;
  • 64.
    Composants Intermédiaires SampleMenu1: exemple de menu La méthode init() frame = new Frame(); menuBar = new MenuBar(); file = new Menu(&quot;file&quot;,true); menuBar.add(file); file.add(&quot;Quit&quot;); frame.setMenuBar(menuBar); frame.show();
  • 65.
    Merci de votreAttention By Korteby Farouk Cours Java Avancée -Applets-
  • 66.
    Pour informations Complémentairesvous pouvez consultez: http://www.jmdoudoux.fr/ didacticiels : ‘Développons en Java’ et ‘Développons en Java avec Eclipse’ http://penserenjava.free.fr/ Thinking in java traduit en française By Korteby Farouk Cours Java Avancée -Applets-