Java Language
Applets
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
.
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 */ }
}
}