Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Java - Conceptos básicos de los subprogramas

Un subprograma es un programa Java que se ejecuta en un navegador Web. Un applet puede ser una aplicación Java completamente funcional porque tiene toda la API de Java a su disposición.

Existen algunas diferencias importantes entre un applet y una aplicación Java independiente, incluidas las siguientes −

Ciclo de Vida de un Applet

Cuatro métodos en la clase Applet le brindan el marco en el que construye cualquier applet serio −

Un subprograma "Hola mundo"

El siguiente es un subprograma simple llamado HelloWorldApplet.java −

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

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

Estas declaraciones de importación llevan las clases al alcance de nuestra clase de applet −

Sin esas instrucciones de importación, el compilador de Java no reconocería las clases Applet y Graphics, a las que se refiere la clase de applet.

La clase Applet

Cada applet es una extensión de la clase java.applet.Applet . La clase Applet base proporciona métodos que una clase Applet derivada puede llamar para obtener información y servicios del contexto del navegador.

Estos incluyen métodos que hacen lo siguiente −

Además, la clase Applet proporciona una interfaz mediante la cual el espectador o navegador obtiene información sobre el applet y controla la ejecución del applet. El espectador puede −

La clase Applet proporciona implementaciones predeterminadas de cada uno de estos métodos. Esas implementaciones pueden anularse según sea necesario.

El subprograma "Hello, World" está completo tal como está. El único método anulado es el método de pintura.

Invocar un subprograma

Se puede invocar un subprograma incrustando directivas en un archivo HTML y viendo el archivo a través de un visor de subprogramas o un navegador habilitado para Java.

La etiqueta es la base para incrustar un applet en un archivo HTML. El siguiente es un ejemplo que invoca el subprograma "Hello, World" −

<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>

Nota − Puede consultar la etiqueta HTML Applet para obtener más información sobre cómo llamar a un applet desde HTML.

Se requiere el atributo de código de la etiqueta . Especifica la clase Applet a ejecutar. El ancho y la altura también son necesarios para especificar el tamaño inicial del panel en el que se ejecuta un subprograma. La directiva del applet debe cerrarse con una etiqueta .

Si un subprograma toma parámetros, se pueden pasar valores para los parámetros agregando etiquetas entre y . El navegador ignora el texto y otras etiquetas entre las etiquetas del subprograma.

Los navegadores no habilitados para Java no procesan y . Por lo tanto, todo lo que aparece entre las etiquetas, no relacionado con el subprograma, es visible en navegadores no habilitados para Java.

El visor o navegador busca el código Java compilado en la ubicación del documento. Para especificar lo contrario, use el atributo de base de código de la etiqueta como se muestra −

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

Si un subprograma reside en un paquete que no sea el predeterminado, el paquete contenedor debe especificarse en el atributo de código usando el carácter de punto (.) para separar los componentes del paquete/clase. Por ejemplo −

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

Obtención de parámetros del subprograma

El siguiente ejemplo demuestra cómo hacer que un subprograma responda a los parámetros de configuración especificados en el documento. Este subprograma muestra un patrón de tablero de ajedrez de color negro y un segundo color.

El segundo color y el tamaño de cada cuadrado se pueden especificar como parámetros para el subprograma dentro del documento.

CheckerApplet obtiene sus parámetros en el método init(). También puede obtener sus parámetros en el método paint(). Sin embargo, obtener los valores y guardar la configuración una vez al inicio del subprograma, en lugar de cada actualización, es conveniente y eficiente.

El visor de applets o navegador llama al método init() de cada applet que ejecuta. El espectador llama a init() una vez, inmediatamente después de cargar el applet. (Applet.init() está implementado para no hacer nada). Anule la implementación predeterminada para insertar un código de inicialización personalizado.

El método Applet.getParameter() obtiene un parámetro dado el nombre del parámetro (el valor de un parámetro es siempre una cadena). Si el valor es numérico u otros datos que no sean caracteres, la cadena debe analizarse.

El siguiente es un esqueleto de 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) {}
}

Aquí están los métodos init() y privado parseSquareSize() de 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
   }
}

El applet llama a parseSquareSize() para analizar el parámetro squareSize. parseSquareSize() llama al método de biblioteca Integer.parseInt(), que analiza una cadena y devuelve un número entero. Integer.parseInt() lanza una excepción cada vez que su argumento no es válido.

Por lo tanto, parseSquareSize() detecta excepciones, en lugar de permitir que el subprograma falle con una entrada incorrecta.

El applet llama a parseColor() para analizar el parámetro de color en un valor de Color. parseColor() realiza una serie de comparaciones de cadenas para hacer coincidir el valor del parámetro con el nombre de un color predefinido. Debe implementar estos métodos para que este subprograma funcione.

Especificación de los parámetros del subprograma

El siguiente es un ejemplo de un archivo HTML con un CheckerApplet incrustado. El archivo HTML especifica ambos parámetros para el applet por medio de la etiqueta .

<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>

Nota − Los nombres de los parámetros no distinguen entre mayúsculas y minúsculas.

Conversión de aplicaciones a applets

Es fácil convertir una aplicación Java gráfica (es decir, una aplicación que utiliza el AWT y que puede iniciar con el iniciador de programas Java) en un subprograma que puede incrustar en una página web.

Los siguientes son los pasos específicos para convertir una aplicación en un subprograma.

  • Cree una página HTML con la etiqueta adecuada para cargar el código del applet.

  • Proporcione una subclase de la clase JApplet. Haz pública esta clase. De lo contrario, el applet no se puede cargar.

  • Eliminar el método principal en la aplicación. No construya una ventana de marco para la aplicación. Su aplicación se mostrará dentro del navegador.

  • Mueva cualquier código de inicialización del constructor de ventana de marco al método init del applet. No es necesario construir explícitamente el objeto applet. El navegador lo instancia por usted y llama al método init.

  • Elimina la llamada a setSize; para los applets, el tamaño se realiza con los parámetros de ancho y alto en el archivo HTML.

  • Quite la llamada a setDefaultCloseOperation. Un applet no se puede cerrar; termina cuando se cierra el navegador.

  • Si la aplicación llama a setTitle, elimine la llamada al método. Los applets no pueden tener barras de título. (Por supuesto, puede ponerle título a la página web usando la etiqueta de título HTML).

  • No llame a setVisible (verdadero). El applet se muestra automáticamente.

Gestión de eventos

Los applets heredan un grupo de métodos de manejo de eventos de la clase Container. La clase Container define varios métodos, como processKeyEvent y processMouseEvent, para manejar tipos particulares de eventos, y luego un método general llamado processEvent.

Para reaccionar a un evento, un subprograma debe anular el método específico del evento adecuado.

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! ");
   }
}

Ahora, llamemos a este subprograma de la siguiente manera −

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

Inicialmente, el subprograma mostrará "inicializando el subprograma. Iniciando el subprograma". Luego, una vez que haga clic dentro del rectángulo, también se mostrará "clic con el mouse".

Mostrar imágenes

Un applet puede mostrar imágenes en formato GIF, JPEG, BMP y otros. Para mostrar una imagen dentro del applet, utilice el método drawImage() que se encuentra en la clase java.awt.Graphics.

A continuación se muestra un ejemplo que ilustra todos los pasos para mostrar imágenes −

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);
   }  
}

Ahora, llamemos a este subprograma de la siguiente manera −

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

Reproducción de audio

Un subprograma puede reproducir un archivo de audio representado por la interfaz AudioClip en el paquete java.applet. La interfaz AudioClip tiene tres métodos, que incluyen −

  • juego público vacío() − Reproduce el clip de audio una vez, desde el principio.

  • bucle vacío público() − Hace que el clip de audio se reproduzca continuamente.

  • parada vacía pública() − Detiene la reproducción del clip de audio.

Para obtener un objeto AudioClip, debe invocar el método getAudioClip() de la clase Applet. El método getAudioClip() regresa inmediatamente, ya sea que la URL se resuelva o no en un archivo de audio real. El archivo de audio no se descarga hasta que se intenta reproducir el clip de audio.

El siguiente es un ejemplo que ilustra todos los pasos para reproducir un audio −

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();
      }
   }
}

Ahora, llamemos a este subprograma de la siguiente manera −

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

Puede usar test.wav en su PC para probar el ejemplo anterior.


Java

  1. Operadores Java
  2. Comentarios Java
  3. Java para cada bucle
  4. Cadenas Java
  5. Interfaz Java
  6. Clase anónima de Java
  7. Prueba de Java con recursos
  8. Anotaciones Java
  9. Aserciones de Java
  10. Java Vector
  11. Java - Conceptos básicos de los subprogramas