Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java - Applet-basisprincipes

Een applet is een Java-programma dat in een webbrowser wordt uitgevoerd. Een applet kan een volledig functionele Java-toepassing zijn omdat deze de volledige Java API tot zijn beschikking heeft.

Er zijn enkele belangrijke verschillen tussen een applet en een zelfstandige Java-toepassing, waaronder de volgende:−

  • Een applet is een Java-klasse die de klasse java.applet.Applet uitbreidt.

  • Een main()-methode wordt niet aangeroepen op een applet en een appletklasse definieert main() niet.

  • Applets zijn ontworpen om te worden ingesloten in een HTML-pagina.

  • Wanneer een gebruiker een HTML-pagina bekijkt die een applet bevat, wordt de code voor de applet gedownload naar de computer van de gebruiker.

  • Een JVM is vereist om een ​​applet te bekijken. De JVM kan ofwel een plug-in van de webbrowser zijn of een aparte runtime-omgeving.

  • De JVM op de computer van de gebruiker maakt een instantie van de appletklasse en roept tijdens de levensduur van de applet verschillende methoden op.

  • Applets hebben strikte beveiligingsregels die worden afgedwongen door de webbrowser. De beveiliging van een applet wordt vaak sandbox-beveiliging genoemd, waarbij de applet wordt vergeleken met een kind dat in een sandbox speelt met verschillende regels die moeten worden gevolgd.

  • Andere klassen die de applet nodig heeft, kunnen worden gedownload in een enkel Java Archive (JAR)-bestand.

Levenscyclus van een applet

Vier methoden in de klasse Applet geven je het raamwerk waarop je een serieuze applet bouwt −

  • init − Deze methode is bedoeld voor elke initialisatie die nodig is voor uw applet. Het wordt aangeroepen nadat de param-tags in de applet-tag zijn verwerkt.

  • begin − Deze methode wordt automatisch aangeroepen nadat de browser de init-methode heeft aangeroepen. Het wordt ook aangeroepen wanneer de gebruiker terugkeert naar de pagina met de applet nadat hij naar andere pagina's is gegaan.

  • stop − Deze methode wordt automatisch aangeroepen wanneer de gebruiker de pagina verlaat waarop de applet staat. Het kan daarom herhaaldelijk in dezelfde applet worden aangeroepen.

  • vernietigen − Deze methode wordt alleen aangeroepen als de browser normaal wordt afgesloten. Omdat applets bedoeld zijn om op een HTML-pagina te staan, moet u normaal gesproken geen bronnen achterlaten nadat een gebruiker de pagina met de applet heeft verlaten.

  • verf − Wordt direct na de start()-methode aangeroepen, en ook wanneer de applet zichzelf opnieuw moet schilderen in de browser. De methode paint() is eigenlijk overgenomen van de java.awt.

Een "Hallo, Wereld"-applet

Hieronder volgt een eenvoudige applet genaamd HelloWorldApplet.java −

import java.applet.*;
import java.awt.*;

public class HelloWorldApplet extends Applet {
   public void paint (Graphics g) {
      g.drawString ("Hello World", 25, 50);
   }
}

Deze importinstructies brengen de klassen binnen het bereik van onze appletklasse −

  • java.applet.Applet
  • java.awt.Graphics

Zonder deze importinstructies zou de Java-compiler de klassen Applet en Graphics niet herkennen, waarnaar de appletklasse verwijst.

De Applet-klasse

Elke applet is een uitbreiding van de klasse java.applet.Applet . De basis Applet-klasse biedt methoden die een afgeleide Applet-klasse kan aanroepen om informatie en services uit de browsercontext te verkrijgen.

Deze omvatten methoden die het volgende doen −

  • Appletparameters ophalen
  • Verkrijg de netwerklocatie van het HTML-bestand dat de applet bevat
  • De netwerklocatie van de applet-klassedirectory ophalen
  • Een statusbericht in de browser afdrukken
  • Een afbeelding ophalen
  • Een audioclip ophalen
  • Speel een audiofragment af
  • Verklein de applet

Bovendien biedt de Applet-klasse een interface waarmee de kijker of browser informatie over de applet verkrijgt en de uitvoering van de applet regelt. De kijker mag −

  • Verzoek om informatie over de auteur, versie en copyright van de applet
  • Vraag een beschrijving aan van de parameters die de applet herkent
  • Initialiseer de applet
  • Vernietig de applet
  • Start de uitvoering van de applet
  • Stop de uitvoering van de applet

De klasse Applet biedt standaardimplementaties van elk van deze methoden. Die implementaties kunnen indien nodig worden overschreven.

De applet "Hallo, wereld" is compleet zoals hij er nu uitziet. De enige methode die overschreven wordt, is de verfmethode.

Een applet aanroepen

Een applet kan worden aangeroepen door richtlijnen in een HTML-bestand in te sluiten en het bestand te bekijken via een appletviewer of een browser met Java-functionaliteit.

De -tag is de basis voor het insluiten van een applet in een HTML-bestand. Hieronder volgt een voorbeeld dat de applet "Hallo wereld" oproept −

<html>
   <title>The Hello, World Applet</title>
   <hr>
   <applet code = "HelloWorldApplet.class" width = "320" height = "120">
      If your browser was Java-enabled, a "Hello, World"
      message would appear here.
   </applet>
   <hr>
</html>

Opmerking − U kunt de HTML-applettag raadplegen voor meer informatie over het aanroepen van een applet vanuit HTML.

Het codekenmerk van de -tag is vereist. Het specificeert de Applet-klasse die moet worden uitgevoerd. Breedte en hoogte zijn ook vereist om de initiële grootte te specificeren van het paneel waarin een applet wordt uitgevoerd. De applet-richtlijn moet worden afgesloten met een -tag.

Als een applet parameters gebruikt, kunnen waarden voor de parameters worden doorgegeven door -tags toe te voegen tussen en . De browser negeert tekst en andere tags tussen de applettags.

Niet-Java-compatibele browsers verwerken en niet. Daarom is alles wat tussen de tags verschijnt, niet gerelateerd aan de applet, zichtbaar in niet-Java-enabled browsers.

De kijker of browser zoekt de gecompileerde Java-code op de locatie van het document. Om anders te specificeren, gebruikt u het codebase-kenmerk van de -tag zoals weergegeven −

<applet codebase = "https://amrood.com/applets" code = "HelloWorldApplet.class"
   width = "320" height = "120">

Als een applet zich in een ander pakket dan het standaardpakket bevindt, moet het bewaarpakket worden gespecificeerd in het codeattribuut met behulp van het puntteken (.) om pakket-/klassecomponenten te scheiden. Bijvoorbeeld −

<applet  = "mypackage.subpackage.TestApplet.class" 
   width = "320" height = "120">

Appletparameters ophalen

Het volgende voorbeeld laat zien hoe u een applet kunt laten reageren op instellingsparameters die in het document zijn gespecificeerd. Deze applet toont een dambordpatroon van zwart en een tweede kleur.

De tweede kleur en de grootte van elk vierkant kunnen worden gespecificeerd als parameters voor de applet in het document.

CheckerApplet haalt zijn parameters op in de init() methode. Het kan ook zijn parameters krijgen in de paint()-methode. Het ophalen van de waarden en het opslaan van de instellingen aan het begin van de applet, in plaats van bij elke vernieuwing, is echter handig en efficiënt.

De appletviewer of browser roept de init()-methode aan van elke applet die wordt uitgevoerd. De kijker roept init() één keer aan, onmiddellijk na het laden van de applet. (Applet.init() is geïmplementeerd om niets te doen.) Overschrijf de standaardimplementatie om aangepaste initialisatiecode in te voegen.

De methode Applet.getParameter() haalt een parameter op met de naam van de parameter (de waarde van een parameter is altijd een tekenreeks). Als de waarde numeriek is of andere gegevens dan tekens, moet de tekenreeks worden geparseerd.

Het volgende is een skelet van CheckerApplet.java −

import java.applet.*;
import java.awt.*;

public class CheckerApplet extends Applet {
   int squareSize = 50;   // initialized to default size
   public void init() {}
   private void parseSquareSize (String param) {}
   private Color parseColor (String param) {}
   public void paint (Graphics g) {}
}

Hier zijn de methoden init() en private parseSquareSize() van CheckerApplet −

public void init () {
   String squareSizeParam = getParameter ("squareSize");
   parseSquareSize (squareSizeParam);
   
   String colorParam = getParameter ("color");
   Color fg = parseColor (colorParam);
   
   setBackground (Color.black);
   setForeground (fg);
}

private void parseSquareSize (String param) {
   if (param == null) return;
   try {
      squareSize = Integer.parseInt (param);
   } catch (Exception e) {
      // Let default value remain
   }
}

De applet roept parseSquareSize() aan om de parameter squareSize te ontleden. parseSquareSize() roept de bibliotheekmethode Integer.parseInt() aan, die een tekenreeks ontleedt en een geheel getal retourneert. Integer.parseInt() genereert een uitzondering wanneer zijn argument ongeldig is.

Daarom vangt parseSquareSize() uitzonderingen op, in plaats van toe te staan ​​dat de applet faalt bij slechte invoer.

De applet roept parseColor() aan om de kleurparameter te ontleden in een kleurwaarde. parseColor() voert een reeks tekenreeksvergelijkingen uit om de parameterwaarde af te stemmen op de naam van een vooraf gedefinieerde kleur. U moet deze methoden implementeren om deze applet te laten werken.

Appletparameters specificeren

Het volgende is een voorbeeld van een HTML-bestand waarin een CheckerApplet is ingesloten. Het HTML-bestand specificeert beide parameters voor de applet door middel van de -tag.

<html>
   <title>Checkerboard Applet</title>
   <hr>
   <applet code = "CheckerApplet.class" width = "480" height = "320">
      <param name = "color" value = "blue">
      <param name = "squaresize" value = "30">
   </applet>
   <hr>
</html>

Opmerking − Parameternamen zijn niet hoofdlettergevoelig.

Applicatieconversie naar applets

Het is eenvoudig om een ​​grafische Java-toepassing (dat wil zeggen een toepassing die de AWT gebruikt en die u kunt starten met de Java-programmastarter) om te zetten in een applet die u in een webpagina kunt insluiten.

Hieronder volgen de specifieke stappen voor het converteren van een applicatie naar een applet.

  • Maak een HTML-pagina met de juiste tag om de appletcode te laden.

  • Geef een subklasse van de JApplet-klasse op. Maak deze les openbaar. Anders kan de applet niet worden geladen.

  • Elimineer de hoofdmethode in de applicatie. Bouw geen kozijnvenster voor de toepassing. Uw applicatie wordt weergegeven in de browser.

  • Verplaats elke initialisatiecode van de framevensterconstructor naar de init-methode van de applet. U hoeft het applet-object niet expliciet te construeren. De browser maakt het voor u aan en roept de init-methode aan.

  • Verwijder de oproep naar setSize; voor applets wordt de grootte bepaald met de parameters width en height in het HTML-bestand.

  • Verwijder de aanroep van setDefaultCloseOperation. Een applet kan niet worden gesloten; het stopt wanneer de browser wordt afgesloten.

  • Als de toepassing setTitle aanroept, elimineer dan de aanroep van de methode. Applets mogen geen titelbalken hebben. (Je kunt de webpagina zelf natuurlijk een titel geven met de HTML-titeltag.)

  • Roep setVisible(true) niet aan. De applet wordt automatisch weergegeven.

Afhandeling van gebeurtenissen

Applets nemen een groep gebeurtenisafhandelingsmethoden over van de klasse Container. De klasse Container definieert verschillende methoden, zoals processKeyEvent en processMouseEvent, voor het afhandelen van bepaalde typen gebeurtenissen, en vervolgens één verzamelmethode met de naam processEvent.

Om op een gebeurtenis te kunnen reageren, moet een applet de juiste gebeurtenisspecifieke methode overschrijven.

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.Applet;
import java.awt.Graphics;

public class ExampleEventHandling extends Applet implements MouseListener {
   StringBuffer strBuffer;

   public void init() {
      addMouseListener(this);
      strBuffer = new StringBuffer();
      addItem("initializing the apple ");
   }

   public void start() {
      addItem("starting the applet ");
   }

   public void stop() {
      addItem("stopping the applet ");
   }

   public void destroy() {
      addItem("unloading the applet");
   }

   void addItem(String word) {
      System.out.println(word);
      strBuffer.append(word);
      repaint();
   }

   public void paint(Graphics g) {
      // Draw a Rectangle around the applet's display area.
      g.drawRect(0, 0, 
      getWidth() - 1,
      getHeight() - 1);

      // display the string inside the rectangle.
      g.drawString(strBuffer.toString(), 10, 20);
   }

   
   public void mouseEntered(MouseEvent event) {
   }
   public void mouseExited(MouseEvent event) {
   }
   public void mousePressed(MouseEvent event) {
   }
   public void mouseReleased(MouseEvent event) {
   }
   public void mouseClicked(MouseEvent event) {
      addItem("mouse clicked! ");
   }
}

Laten we deze applet nu als volgt noemen:−

<html>
   <title>Event Handling</title>
   <hr>
   <applet code = "ExampleEventHandling.class" 
      width = "300" height = "300">
   </applet>
   <hr>
</html>

In eerste instantie zal de applet "de applet initialiseren. De applet starten". Zodra u vervolgens in de rechthoek klikt, wordt ook "muisklik" weergegeven.

Afbeeldingen weergeven

Een applet kan afbeeldingen weergeven van het formaat GIF, JPEG, BMP en andere. Om een ​​afbeelding in de applet weer te geven, gebruikt u de methode drawImage() die u vindt in de klasse java.awt.Graphics.

Hieronder volgt een voorbeeld dat alle stappen illustreert om afbeeldingen weer te geven −

import java.applet.*;
import java.awt.*;
import java.net.*;

public class ImageDemo extends Applet {
   private Image image;
   private AppletContext context;
   
   public void init() {
      context = this.getAppletContext();
      String imageURL = this.getParameter("image");
      if(imageURL == null) {
         imageURL = "java.jpg";
      }
      try {
         URL url = new URL(this.getDocumentBase(), imageURL);
         image = context.getImage(url);
      } catch (MalformedURLException e) {
         e.printStackTrace();
         // Display in browser status bar
         context.showStatus("Could not load image!");
      }
   }
   
   public void paint(Graphics g) {
      context.showStatus("Displaying image");
      g.drawImage(image, 0, 0, 200, 84, null);
      g.drawString("www.javalicense.com", 35, 100);
   }  
}

Laten we deze applet nu als volgt noemen:−

<html>
   <title>The ImageDemo applet</title>
   <hr>
   <applet code = "ImageDemo.class" width = "300" height = "200">
      <param name = "image" value = "java.jpg">
   </applet>
   <hr>
</html>

Audio afspelen

Een applet kan een audiobestand afspelen dat wordt vertegenwoordigd door de AudioClip-interface in het pakket java.applet. De AudioClip-interface heeft drie methoden, waaronder −

  • public void play() − Speelt de audioclip één keer af, vanaf het begin.

  • public void loop() − Zorgt ervoor dat de audioclip voortdurend opnieuw wordt afgespeeld.

  • openbare ongeldige stop() − Stopt het afspelen van de audioclip.

Om een ​​AudioClip-object te verkrijgen, moet u de methode getAudioClip() van de klasse Applet aanroepen. De methode getAudioClip() retourneert onmiddellijk, ongeacht of de URL wordt omgezet in een echt audiobestand. Het audiobestand wordt pas gedownload als wordt geprobeerd de audioclip af te spelen.

Hieronder volgt een voorbeeld dat alle stappen illustreert om een ​​audio af te spelen −

import java.applet.*;
import java.awt.*;
import java.net.*;

public class AudioDemo extends Applet {
   private AudioClip clip;
   private AppletContext context;
   
   public void init() {
      context = this.getAppletContext();
      String audioURL = this.getParameter("audio");
      if(audioURL == null) {
         audioURL = "default.au";
      }
      try {
         URL url = new URL(this.getDocumentBase(), audioURL);
         clip = context.getAudioClip(url);
      } catch (MalformedURLException e) {
         e.printStackTrace();
         context.showStatus("Could not load audio file!");
      }
   }
   
   public void start() {
      if(clip != null) {
         clip.loop();
      }
   }
   
   public void stop() {
      if(clip != null) {
         clip.stop();
      }
   }
}

Laten we deze applet nu als volgt noemen:−

<html>
   <title>The ImageDemo applet</title>
   <hr>
   <applet code = "ImageDemo.class" width = "0" height = "0">
      <param name = "audio" value = "test.wav">
   </applet>
   <hr>
</html>

U kunt test.wav op uw pc gebruiken om het bovenstaande voorbeeld te testen.


Java

  1. Java-operators
  2. Java-opmerkingen
  3. Java voor elke lus
  4. Java-strings
  5. Java-interface
  6. Java anonieme klasse
  7. Java proberen-met-bronnen
  8. Java-annotaties
  9. Java-beweringen
  10. Java-vector
  11. Java - Applet-basisprincipes