English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un applet es un programa Java. Generalmente se ejecuta en un navegador web que admite Java. Debido a que tiene completa API de Java, un applet es una aplicación Java de pleno derecho.
A continuación, se muestra la importante diferencia entre una aplicación Java independiente y un programa applet:
La clase Applet en Java hereda de java.applet.Applet.
La clase Applet no define main(), por lo que un programa Applet no llama al método main().
El Applet se diseñó para estar incrustado en una página HTML.
Cuando el usuario navega por la página HTML que contiene el Applet, el código del Applet se descarga a la máquina del usuario.
Para ver un Applet se necesita JVM. El JVM puede ser un complemento del navegador web o un entorno de tiempo de ejecución independiente.
El JVM en la máquina del usuario crea un ejemplo de la clase Applet y llama a varios métodos del ciclo de vida del Applet.
El Applet tiene reglas de seguridad estrictas impuestas por el navegador web, y el mecanismo de seguridad del Applet se llama seguridad en sandbox.
Las clases adicionales que necesita el Applet se pueden descargar en forma de archivo Java Archive (JAR).
Los cuatro métodos en la clase Applet nos proporcionan un cuadro de trabajo en el que podemos desarrollar miniaplicaciones:
init: El propósito de este método es proporcionar cualquier inicialización necesaria para tu Applet. Este método se llama después de que se procesan las etiquetas param dentro del marcador Applet.
start: Este método se llama automáticamente después de que el navegador llama al método init. Cada vez que el usuario regresa a la página que contiene el Applet desde otra página, se llama este método.
stop: Este método se llama automáticamente cuando el usuario elimina el Applet de la página. Por lo tanto, se puede llamar repetidamente el mismo método en el mismo Applet.
destroy: Este método solo se llama cuando el navegador se cierra normalmente. Ya que el Applet solo es válido en las páginas HTML, no debes dejar de liberar recursos cuando el usuario sale de la página que contiene el Applet.
paint: Este método se llama inmediatamente después del método start() o cuando el Applet necesita ser redrawado en el navegador. El método paint() se hereda de java.awt.
A continuación, se muestra un programa Applet simple 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 instrucciones importan las siguientes clases al nuestro Applet:
java.applet.Applet. java.awt.Graphics.
Sin estas declaraciones import, el compilador Java no puede identificar las clases Applet y Graphics.
Cada Applet es una subclase de java.applet.Applet, la clase Applet básica proporciona métodos para que las subclases deriven, para obtener información de contexto y servicios del navegador.
Estos métodos hacen lo siguiente:
Obtener los parámetros del Applet
Obtener la ubicación de red del archivo HTML que contiene el Applet
Obtener la ubicación de red del directorio de la clase Applet
Imprimir información de estado del navegador
Obtener una imagen
Obtener un fragmento de audio
Reproducir un fragmento de audio
Ajustar el tamaño de este Applet
Además, la clase Applet proporciona una interfaz que permite al visualizador o navegador obtener información del Applet y controlar su ejecución.
El visualizador podría ser:
Información sobre el autor, versión y copyright del Applet
Descripción de los parámetros que el Applet reconoce
Inicializar el Applet
Destruir el Applet
Iniciar la ejecución del Applet
Finalizar la ejecución del Applet
La clase Applet proporciona implementaciones por defecto para estos métodos, que se pueden sobrescribir cuando sea necesario.
Los applets "Hello, World" están escritos según estándares. El único método que se reescribe es paint.
Un Applet es un programa Java. Generalmente se ejecuta en navegadores web que soportan Java. Debido a que tiene completa soporte API de Java, el Applet es una aplicación Java completa.
La etiqueta <applet> es la base para insertar Applet en un archivo HTML. A continuación se muestra un ejemplo de cómo llamar al applet "Hello World";
<html> <title>The Hello, World Applet</title> <hr> <applet code="HelloWorldApplet.class" width="320" height="120"> Si tu navegador era Java-habilitado, un "Hello, World" message appearance here. </applet> <hr> </html>
Atención: Puedes consultar la etiqueta HTML Applet para obtener más información sobre cómo llamar a applet desde HTML.
Los atributos de la etiqueta <applet> especifican la clase de Applet que se debe ejecutar. width y height se utilizan para especificar el tamaño inicial del panel de ejecución de Applet. Applet debe usar </applet> para cerrar.
Si el Applet acepta parámetros, los valores de los parámetros deben agregarse en la etiqueta <param>, que se encuentra entre <applet> y </applet> entre. El navegador ignora el texto entre las etiquetas <applet> y otras etiquetas.
Los navegadores que no admiten Java no pueden ejecutar <applet> y </applet> Por lo tanto, cualquier cosa que se muestre entre las etiquetas y no esté relacionada con el applet, es visible en los navegadores que no admiten Java.
El visor o el navegador busca el código Java compilado en la ubicación del documento. Para especificar la ruta del documento, debe usar el atributo codebase del etiqueta <applet>.
Como se muestra a continuación:
<applet codebase="http://amrood.com/applets code="HelloWorldApplet.class" width="320" height="120">
Si el Applet se encuentra en un paquete en lugar del paquete predeterminado, el paquete en el que se encuentra debe especificarse en el atributo code, por ejemplo:
<applet code="mypackage.subpackage.TestApplet.class" width="320" height="120">
El siguiente ejemplo muestra cómo usar una respuesta de Applet para configurar los parámetros especificados en el archivo. El Applet muestra un patrón de tablero negro y el segundo color.
El segundo color y el tamaño de cada columna se especifican mediante los parámetros de Applet en el 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, es más conveniente y eficiente obtener valores y guardar configuraciones cuando Applet comienza a obtener valores en lugar de cada vez que se actualiza.
El visor de Applet o el navegador llama al método init() cada vez que se ejecuta Applet. Después de cargar Applet, el Visor llama inmediatamente al método init() (Applet.init() no hace nada), sobrescribe la implementación predeterminada del método y agrega algunos códigos de inicialización personalizados.
El método getParameter() de Applet devuelve el valor del parámetro proporcionando el nombre del parámetro. Si el valor obtenido es un número u otro tipo de datos no de caracteres, debe解析为 tipo de cadena.
El siguiente ejemplo es la modificación de CheckerApplet.java:
import java.applet;*; import java.awt;*; public class CheckerApplet extends Applet { int squareSize = 50;// Inicializar el tamaño predeterminado public void init() {} private void parseSquareSize(String param) {} private Color parseColor(String param) {} public void paint(Graphics g) {} }
A continuación se muestra el método init() de la clase CheckerApplet y el método privado parseSquareSize():
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) { // Mantener el valor predeterminado } }
El Applet llama a parseSquareSize() para analizar el parámetro squareSize. parseSquareSize() llama al método de la biblioteca Integer.parseInt(), que convierte una cadena en un entero. Cuando los parámetros son inválidos, Integer.parseInt() lanza una excepción.
Por lo tanto, el método parseSquareSize() también captura excepciones y no permite que Applet acepte entradas inválidas.
El Applet llama al método parseColor() para analizar el parámetro de color en un valor Color. El método parseColor() realiza una serie de comparaciones de cadenas para coincidir el valor del parámetro con los nombres de colores predefinidos. Necesitas implementar estos métodos para que el Applet funcione.
El siguiente ejemplo es un archivo HTML que integra la clase CheckerApplet. El archivo HTML especifica dos parámetros para el applet utilizando la etiqueta <param>.
<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>
Atención: Los nombres de los parámetros no distinguen entre mayúsculas y minúsculas.
Convertir una aplicación Java gráfica (es decir, aplicaciones que utilizan AWT y se inician con el lanzador java) en un applet integrado en una página web es muy simple.
A continuación, se presentan varios pasos para convertir una aplicación en Applet:
Escriba una página HTML que tenga etiquetas capaces de cargar el código del applet.
Escriba una subclase de JApplet y configurela como public. De lo contrario, el Applet no se puede cargar.
Elimine el método main() de la aplicación. No construya una ventana de framework para la aplicación, ya que debe mostrarse en el navegador.
Mueva el código de inicialización del constructor de la ventana de framework de la aplicación al método init() del Applet. No es necesario construir explícitamente el objeto Applet, ya que el navegador lo instanciará llamando al método init().
Elimine la llamada al método setSize(). Para el Applet, el tamaño ya está configurado mediante los parámetros width y height del archivo HTML.
Elimine la llamada al método setDefaultCloseOperation(). El Applet no puede cerrarse; termina junto con la salida del navegador.
Si la aplicación llama al método setTitle(), elimine la llamada a este método. El applet no puede tener una barra de título. (Por supuesto, puedes nombrar a la propia página web mediante la etiqueta title de HTML).
No llame a setVisible(true), el Applet se muestra automáticamente.
La clase Applet hereda muchos métodos de manejo de eventos de la clase Container. La clase Container define varios métodos, como processKeyEvent() y processMouseEvent(), que se utilizan para manejar tipos de eventos específicos, y también hay un método que captura todos los eventos llamado processEvent.
Para responder a un evento, el Applet debe sobrescribir el método de manejo de eventos 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("inicializando el applet "); } public void start() { addItem("iniciando el applet "); } public void stop() { addItem("deteniendo el applet "); } public void destroy() { addItem("descargando el applet"); } void addItem(String word) { System.out.println(word); strBuffer.append(word); repaint(); } public void paint(Graphics g) { //Dibujar un Rectángulo alrededor del área de visualización del applet. g.drawRect(0, 0, getWidth() - 1, getHeight()} - 1); //mostrar la cadena dentro del rectángulo. 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("¡clic del ratón!"); } }
La siguiente llamada al Applet es:
<html> <title>Manejo de eventos</title> <hr> <applet code="ExampleEventHandling.class" width="300" height="300"> </applet> <hr> </html>
Al ejecutarse por primera vez, el Applet muestra "inicializando el applet. Comenzando el applet." y luego, al hacer clic en el cuadro rectangular, se muestra "clic del ratón".
El Applet puede mostrar imágenes en formato GIF, JPEG, BMP y otros. Para mostrar imágenes en el Applet, debes usar el método drawImage() de la clase java.awt.Graphics.
El siguiente ejemplo muestra todos los pasos para mostrar una imagen:
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(); // Mostrar en la barra de estado del navegador context.showStatus("No se pudo cargar la imagen!"); } } public void paint(Graphics g) { context.showStatus("Displaying image"); 200, 84, null); g.drawString("www.javalicense.com", 35, 100); } }
La siguiente llamada al applet es:
<html> <title>The ImageDemo applet</title> <hr> <applet code="ImageDemo.class" width="300" height="200"> <param name="image" value="java.jpg"> </applet> <hr> </html>
El Applet puede reproducir audio utilizando el interfaz AudioClip del paquete java.applet. El interfaz AudioClip define tres métodos:
public void play(): Reproducir el fragmento de audio desde el principio una vez.
public void loop(): Reproducir el fragmento de audio en bucle
public void stop(): Detener la reproducción del fragmento de audio
Para obtener el objeto AudioClip, debe llamar al método getAudioClip() de la clase Applet. Independientemente de si la URL apunta a un archivo de audio real o no, este método devuelve inmediatamente el resultado.
Hasta que se necesite reproducir el archivo de audio, este se descargará.
El siguiente ejemplo muestra todos los pasos necesarios para reproducir 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("No se pudo cargar el archivo de audio!"); } } public void start() { if(clip != null) { clip.loop(); } } public void stop() { if(clip != null) { clip.stop(); } } }
Llamada al applet como se muestra a continuación:
<html> <title>The ImageDemo applet</title> <hr> <applet code="ImageDemo.class" width="0" height="0"> <param name="audio" value="test.wav"> </applet> <hr>
Puedes usar test.wav en tu computadora para probar el ejemplo anterior.