Buscar..


Introducción

Los applets han sido parte de Java desde su lanzamiento oficial y se han utilizado para enseñar Java y programación durante varios años.

Los últimos años han visto un impulso activo para alejarse de los applets y otros complementos del navegador, con algunos navegadores que los bloquean o no los apoyan activamente.

En 2016, Oracle anunció sus planes de dejar de usar el complemento, pasando a una web sin complementos

Ya están disponibles las API más nuevas y mejores

Observaciones

Un applet es una aplicación Java que normalmente se ejecuta dentro de un navegador web. La idea básica es interactuar con el usuario sin la necesidad de interactuar con el servidor y transferir información. Este concepto fue muy exitoso alrededor del año 2000 cuando la comunicación por Internet era lenta y costosa.

Un applet ofrece cinco métodos para controlar su ciclo de vida.

nombre del método descripción
init() se llama una vez cuando se carga el applet
destroy() se llama una vez cuando el applet se elimina de la memoria
start() se llama cada vez que el applet se hace visible
stop() se llama cada vez que el applet se superpone con otras ventanas
paint() se llama cuando es necesario o se activa manualmente llamando a repaint()

Applet mínimo

Un applet muy simple dibuja un rectángulo e imprime una cadena en la pantalla.

public class MyApplet extends JApplet{ 

    private String str = "StackOverflow";

    @Override
    public void init() {
        setBackground(Color.gray);
    }
    @Override
    public void destroy() {}
    @Override
    public void start() {}
    @Override
    public void stop() {}
    @Override
    public void paint(Graphics g) {
        g.setColor(Color.yellow);
        g.fillRect(1,1,300,150);
        g.setColor(Color.red);
        g.setFont(new Font("TimesRoman", Font.PLAIN, 48));
        g.drawString(str, 10, 80);
    }
}

La clase principal de un applet se extiende desde javax.swing.JApplet .

Java SE 1.2

Antes de Java 1.2 y la introducción de los applets de API swing se extendió desde java.applet.Applet .

Los applets no requieren un método principal. El punto de entrada está controlado por el ciclo de vida. Para usarlos, necesitan estar incrustados en un documento HTML. Este es también el punto donde se define su tamaño.

<html>
  <head></head>
  <body>
     <applet code="MyApplet.class" width="400" height="200"></applet>
  </body>
</html>

Creando una GUI

Los applets podrían usarse fácilmente para crear una GUI. Actúan como un Container y tienen un método add() que toma cualquier componente awt o swing .

public class MyGUIApplet extends JApplet{

    private JPanel panel;
    private JButton button;
    private JComboBox<String> cmbBox;
    private JTextField textField;

    @Override
    public void init(){
        panel = new JPanel();        
        button = new JButton("ClickMe!");
        button.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent ae) {
                if(((String)cmbBox.getSelectedItem()).equals("greet")) {
                    JOptionPane.showMessageDialog(null,"Hello " + textField.getText());
                } else {
                    JOptionPane.showMessageDialog(null,textField.getText() + " stinks!");
                }
            }
        });
        cmbBox = new JComboBox<>(new String[]{"greet", "offend"});
        textField = new JTextField("John Doe");
        panel.add(cmbBox);
        panel.add(textField);
        panel.add(button);
        add(panel);
    }
}

Abrir enlaces desde dentro del applet

Puede usar el método getAppletContext() para obtener un objeto AppletContext que le permite solicitar al navegador que abra un enlace. Para ello utiliza el método showDocument() . Su segundo parámetro le dice al navegador que use una nueva ventana _blank o la que muestra el applet _self .

public class MyLinkApplet extends JApplet{
    @Override
    public void init(){
        JButton button = new JButton("ClickMe!");
        button.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent ae) {
                AppletContext a = getAppletContext();                 
                try {
                    URL url = new URL("http://stackoverflow.com/");
                    a.showDocument(url,"_blank");
                } catch (Exception e) { /* omitted for brevity */ }   
            }
        });
        add(button);
    }
}

Cargando imágenes, audio y otros recursos.

Los applets de Java son capaces de cargar diferentes recursos. Pero como se ejecutan en el navegador web del cliente, debe asegurarse de que estos recursos sean accesibles. Los applets no pueden acceder a los recursos del cliente como el sistema de archivos local.

Si desea cargar recursos desde la misma URL en la que está almacenado el Applet, puede usar el método getCodeBase() para recuperar la URL base. Para cargar recursos, los applets ofrecen los métodos getImage() y getAudioClip() para cargar imágenes o archivos de audio.

Cargar y mostrar una imagen.

public class MyImgApplet extends JApplet{

    private Image img;

    @Override
    public void init(){
        try {
            img = getImage(new URL("http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo.png"));
        } catch (MalformedURLException e) { /* omitted for brevity */ }
    }
    @Override
        public void paint(Graphics g) {
            g.drawImage(img, 0, 0, this);
        } 
}

Cargar y reproducir un archivo de audio.

public class MyAudioApplet extends JApplet{

    private AudioClip audioClip;

    @Override
    public void init(){
        try {
            audioClip = getAudioClip(new URL("URL/TO/AN/AUDIO/FILE.WAV"));
        } catch (MalformedURLException e) { /* omitted for brevity */ }
    }
    @Override
    public void start() {
        audioClip.play();
    } 
    @Override
    public void stop(){
        audioClip.stop();
    }
}

Cargar y mostrar un archivo de texto

public class MyTextApplet extends JApplet{
    @Override
    public void init(){
        JTextArea textArea = new JTextArea();
        JScrollPane sp = new JScrollPane(textArea);
        add(sp);
        // load text
        try {
            URL url = new URL("http://www.textfiles.com/fun/quotes.txt");
            InputStream in = url.openStream();
            BufferedReader bf = new BufferedReader(new InputStreamReader(in));
            String line = "";
            while((line = bf.readLine()) != null) {
                textArea.append(line + "\n");
            }
        } catch(Exception e) { /* omitted for brevity */ }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow