Java Language
applet
Ricerca…
introduzione
Le applet fanno parte di Java sin dalla sua versione ufficiale e sono state utilizzate per insegnare Java e la programmazione per diversi anni.
Gli ultimi anni hanno visto una spinta attiva per allontanarsi da Applet e altri plugin del browser, con alcuni browser che li bloccano o non li supportano attivamente.
Nel 2016, Oracle ha annunciato l'intenzione di deprecare il plug-in, passare a un Web senza plug-in
Sono ora disponibili API nuove e migliori
Osservazioni
Un'applet è un'applicazione Java che normalmente viene eseguita all'interno di un browser web. L'idea di base è quella di interagire con l'utente senza la necessità di interagire con il server e trasferire le informazioni. Questo concetto ha avuto molto successo intorno all'anno 2000, quando la comunicazione via internet era lenta e costosa.
Un'applet offre cinque metodi per controllare il loro ciclo di vita.
nome del metodo | descrizione |
---|---|
init() | viene chiamato una volta quando viene caricata l'applet |
destroy() | viene chiamato una volta quando l'applet viene rimosso dalla memoria |
start() | viene chiamato ogni volta che l'applet diventa visibile |
stop() | viene chiamato ogni volta che l'applet viene sovrapposta ad altre finestre |
paint() | viene chiamato quando necessario o attivato manualmente chiamando repaint() |
Applet minima
Un'applet molto semplice disegna un rettangolo e stampa una stringa sullo schermo.
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 classe principale di un'applet si estende da javax.swing.JApplet
.
Prima che Java 1.2 e l'introduzione delle applet API swing fossero estese da java.applet.Applet
.
Le applet non richiedono un metodo principale. Il punto di ingresso è controllato dal ciclo di vita. Per usarli, devono essere incorporati in un documento HTML. Questo è anche il punto in cui è definita la loro dimensione.
<html>
<head></head>
<body>
<applet code="MyApplet.class" width="400" height="200"></applet>
</body>
</html>
Creazione di una GUI
Le applet potrebbero essere facilmente utilizzate per creare una GUI. Si comportano come un Container
e hanno un metodo add()
che prende qualsiasi 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);
}
}
Apri i collegamenti dall'applet
È possibile utilizzare il metodo getAppletContext()
per ottenere un oggetto AppletContext
che consente di richiedere al browser di aprire un collegamento. Per questo si usa il metodo showDocument()
. Il suo secondo parametro dice al browser di usare una nuova finestra _blank
o quella che mostra l'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);
}
}
Caricamento di immagini, audio e altre risorse
Le applet Java sono in grado di caricare risorse diverse. Ma dal momento che sono in esecuzione nel browser Web del client, è necessario assicurarsi che tali risorse siano accessibili. Le applet non sono in grado di accedere alle risorse client come file system locale.
Se si desidera caricare risorse dallo stesso URL in cui è memorizzata l'applet, è possibile utilizzare il metodo getCodeBase()
per recuperare l'URL di base. Per caricare risorse, le applet offrono i metodi getImage()
e getAudioClip()
per caricare immagini o file audio.
Carica e mostra un'immagine
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);
}
}
Carica e riproduci un file 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();
}
}
Carica e visualizza un file di testo
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 */ }
}
}