Creando un applet sencillo. Los applets son GUI's hechas en java, que tienen la particularidad de poder se incluidas en una página web, mediante la etiqueta applet de html, lo que abre la posibilidad de tener complejas aplicaciones en una página web. Debido a que los applets son programas hechos en java, son independientes de la plataforma y del navegador, con el único requisito de que en el lado del cliente se cuente con la JVM correspondiente. Sin embargo, debido al esquema de seguridad de java, las aplicaciones de este tipo, están imposibilitadas para realizar operaciones de entrada/salida en el lado del cliente. Es decir que en principio no pueden crearse conexiones o leer y escribir en archivos. Aun así existe una forma de poder realizar este tipo de acciones, a travéz de la creación de applets, firmados, lo cuál solo se comentará por el momento y se remite al lector a la documentación correspondiente. Para java un applet es un contenedor por lo tanto existe una clase Applet contenida en el paquete java.applet, que nos representa a este tipo de contenedores, que a su vez es una subclase de la clase Panel de AWT, por lo que se trabajará preferentemente con la clase JApplet de swing, heredada de la citada clase Applet, pero nos será útil por los métodos definidos en ella. Para crear un applet, se siguen la misma metodología de las GUI's, con las siguientes diferencias. El método invocado por el browser (navegador) para informar que el applet ha sido cargado en el sistema es el método init(), definido en la clase Applet. Es en este método en el cual se comenzará con la ejecución del programa. No tiene mucho sentido definir un método constructor, pues como ya se comentó al cargar el applet, el navegador llama al método init(). - Para crear una applet normalmente será necesario importar al menos las bibliotecas java.awt.* y la java.applet.*
- La clase que represente a la applet se ha de declarar como una subclase de la clase Applet, para poder sobreescribir los métodos de la clase Applet
- Siempre conviene sobreescribir al menos el método paint() que será llamado por los navegadores que soporten applets para mostrarles por pantalla.
Vamos a construir una applet denominada AppletDiagonal que simplemente dibuje una línea diagonal. Un posible código para esta applet sería: Primer ejemplo de Applet import java.awt.*; import java.applet.*; public class Diagonal extends Applet { g.drawLine(0, 0, getWidth(), getHeight() ); } } -
import%20java.awt.%2A%3B%0D%0A%0D%0Aimport%20java.applet.%2A%3B%0D%0A%0D%0Apublic%20class%20Diagonal%20extends%20Applet%20%7B%0D%0A%0D%0A%09public%20void%20paint%28Graphics%20g%29%20%7B%0D%0A%0D%0A%09%09g.setColor%28%20Color.red%20%29%3B%0D%0A%0D%0A%09%09g.drawLine%280%2C%200%2C%20getWidth%28%29%2C%20getHeight%28%29%20%29%3B%0D%0A%0D%0A%09%7D%0D%0A%0D%0A%7D%0D%0A%0D%0A Expliquemos como funciona este código: - El método paint() recibe un objeto de la clase Graphics. La clase Graphics, incluida en el AWT, contiene métodos para mostrar varios tipos de gráficos.
- Mediante el método setColor() de la clase Graphics se establece el color de primer plano a rojo, que es uno de los colores predefinidos de la clase Color.
- Por último, mediante drawLine() se dibuja una línea dadas las coordenadas de su esquina superior izquierda y de la inferior derecha. En este caso se indican la esquina superior izquierda de la applet mediante las coordenadas (0,0), y la esquina inferior derecha se obtiene mediante dos métodos de la clase Dimension ( getWidth(), getHeight() ).
Para ejecutar la applet, una vez compilado el fichero, se introduce la llamada a la applet en una página Web (por ejemplo AppletDiagonal.htm), introduciendo entre su código HTML lo siguiente: Applet insertado en un HTML <applet code="Diagonal.class" width=200 height=200> </applet> </center> </body> </html> -
%3Chtml%3E%0A%0A%3Cbody%20bgcolor%3D%22%23ccc%22%3E%0A%09%3Ccenter%3E%0A%09%3Capplet%20code%3D%22Diagonal.class%22%20width%3D200%20height%3D200%3E%0A%09%3C%2Fapplet%3E%0A%09%3C%2Fcenter%3E%0A%3C%2Fbody%3E%0A%3C%2Fhtml%3E%0A Prueba este ejemplo. Veamos otro ejemplo más complicado: Otro ejemplo de applet [AppletBasico] import java.awt.*; import javax.swing.*; /** * Este ejemplo genera un applet básico heredado * de la clase JApplet * @author adresc * */ public class AppletBasico extends JApplet { private JPanel jContentPane = null; /* *Se sobre escribe el método init() para *inicializar el applet * */ public void init() { /* * Se define un color de fondo y tamaño * como se hace para otros contenedores */ this.setSize(300, 200); this. setBackground(Color. ORANGE); /* * Se determina al JPanel como contenedor */ this.setContentPane(getJContentPane()); repaint(); } /* * Se se inicializa el JPanel */ private JPanel getJContentPane () { if (jContentPane == null) { } return jContentPane; } /* * Se sobreescribe el metodo paint, para que * dibuje algunos gráficos en el applet * */ for(int i=0;i<150;i+=3) { if((i%2)!=0) else g.drawRect(150, 50, i+10, i); } g.setFont(f); g.drawString("Applet Basico", 10, 30); } }
import%20java.awt.%2A%3B%0D%0Aimport%20javax.swing.%2A%3B%0D%0A%2F%2A%2A%0D%0A%2A%20Este%20ejemplo%20genera%20un%20applet%20b%E1sico%20heredado%0D%0A%2A%20de%20la%20clase%20JApplet%0D%0A%2A%20%40author%20adresc%0D%0A%2A%0D%0A%2A%2F%0D%0Apublic%20class%20AppletBasico%20extends%20JApplet%20%7B%0D%0A%20%20%20%20private%20JPanel%20jContentPane%20%3D%20null%3B%0D%0A%20%20%20%20%2F%2A%0D%0A%20%20%20%20%2ASe%20sobre%20escribe%20el%20m%E9todo%20init%28%29%20para%0D%0A%20%20%20%20%2Ainicializar%20el%20applet%0D%0A%20%20%20%20%2A%0D%0A%20%20%20%20%2A%2F%0D%0A%20%20%20%20public%20void%20init%28%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%2F%2A%0D%0A%20%20%20%20%20%20%20%20%2A%20Se%20define%20un%20color%20de%20fondo%20y%20tama%F1o%0D%0A%20%20%20%20%20%20%20%20%2A%20como%20se%20hace%20para%20otros%20contenedores%0D%0A%20%20%20%20%20%20%20%20%2A%2F%0D%0A%20%20%20%20%20%20%20%20this.setSize%28300%2C%20200%29%3B%0D%0A%20%20%20%20%20%20%20%20this.setBackground%28Color.ORANGE%29%3B%0D%0A%20%20%20%20%20%20%20%20%2F%2A%0D%0A%20%20%20%20%20%20%20%20%2A%20Se%20determina%20al%20JPanel%20como%20contenedor%0D%0A%20%20%20%20%20%20%20%20%2A%2F%0D%0A%20%20%20%20%20%20%20%20this.setContentPane%28getJContentPane%28%29%29%3B%0D%0A%20%20%20%20%20%20%20%20repaint%28%29%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20%2F%2A%0D%0A%20%20%20%20%2A%20Se%20se%20inicializa%20el%20JPanel%0D%0A%20%20%20%20%2A%2F%0D%0A%20%20%20%20private%20JPanel%20getJContentPane%28%29%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20%28jContentPane%20%3D%3D%20null%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20jContentPane%20%3D%20new%20JPanel%28%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20jContentPane.setLayout%28new%20GridLayout%285%2C2%29%29%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20return%20jContentPane%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20%2F%2A%0D%0A%20%20%20%20%2A%20Se%20sobreescribe%20el%20metodo%20paint%2C%20para%20que%0D%0A%20%20%20%20%2A%20dibuje%20algunos%20gr%E1ficos%20en%20el%20applet%0D%0A%20%20%20%20%2A%0D%0A%20%20%20%20%2A%2F%0D%0A%20%20%20%20public%20void%20paint%28Graphics%20g%29%20%7B%0D%0A%20%20%20%20%20%20%20%20Font%20f%3Dnew%20Font%28%22Arial%22%2CFont.ITALIC%2C30%29%3B%0D%0A%20%20%20%20%20%20%20%20for%28int%20i%3D0%3Bi%3C150%3Bi%2B%3D3%29%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%28%28i%252%29%21%3D0%29%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20g.setColor%28Color.GREEN%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20g.setColor%28Color.BLUE%29%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20g.drawRect%28150%2C%2050%2C%20i%2B10%2C%20i%29%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20g.setFont%28f%29%3B%0D%0A%20%20%20%20%20%20%20%20g.drawString%28%22Applet%20Basico%22%2C%2010%2C%2030%29%3B%0D%0A%20%20%20%20%7D%0D%0A%7D Prueba este ejemplo. Un ejemplo más, en este caso usamos Swing: Usando Swing import java.awt.*; import javax.swing.*; public class JAppletEjemplo extends JApplet { public void init() { setNativeLookAndFeel(); content. setBackground(Color. white); content. add(new JButton("Button 1")); content. add(new JButton("Button 2")); content. add(new JButton("Button 3")); } -
/** Tell system to use native look and feel, as in previous * releases. Metal (Java) LAF is the default otherwise. */ public static void setNativeLookAndFeel() { try { System. out. println("Error setting native LAF: " + e ); } } -
}
import%20java.awt.%2A%3B%0Aimport%20javax.swing.%2A%3B%0A%0Apublic%20class%20JAppletEjemplo%20extends%20JApplet%20%7B%0A%20%20public%20void%20init%28%29%20%7B%0A%20%20%20%20setNativeLookAndFeel%28%29%3B%0A%20%20%20%20Container%20content%20%3D%20getContentPane%28%29%3B%0A%20%20%20%20content.setBackground%28Color.white%29%3B%0A%20%20%20%20content.setLayout%28new%20FlowLayout%28%29%29%3B%20%0A%20%20%20%20content.add%28new%20JButton%28%22Button%201%22%29%29%3B%0A%20%20%20%20content.add%28new%20JButton%28%22Button%202%22%29%29%3B%0A%20%20%20%20content.add%28new%20JButton%28%22Button%203%22%29%29%3B%0A%20%20%20%20content.add%28new%20JTextField%28%22Campo%20de%20texto%22%29%29%3B%0A%20%20%7D%0A%20%20%0A%20%2F%2A%2A%20Tell%20system%20to%20use%20native%20look%20and%20feel%2C%20as%20in%20previous%0A%20%20%20%2A%20%20releases.%20Metal%20%28Java%29%20LAF%20is%20the%20default%20otherwise.%0A%20%20%20%2A%2F%0A%0A%20%20public%20static%20void%20setNativeLookAndFeel%28%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20UIManager.setLookAndFeel%28UIManager.getSystemLookAndFeelClassName%28%29%29%3B%0A%20%20%20%20%7D%20catch%28Exception%20e%29%20%7B%0A%20%20%20%20%20%20System.out.println%28%22Error%20setting%20native%20LAF%3A%20%22%20%2B%20e%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20%0A%7D Prueba este ejemplo.
|