Java Language
applets
Zoeken…
Invoering
Applets maken sinds de officiële release deel uit van Java en worden al een aantal jaren gebruikt om Java en programmeren te onderwijzen.
De afgelopen jaren is er een actieve push geweest om weg te stappen van applets en andere browserplug-ins, waarbij sommige browsers deze blokkeerden of actief niet ondersteunden.
In 2016 kondigde Oracle hun plannen aan om de plug-in af te schaffen, verhuizen naar een web zonder plug-ins
Nieuwere en betere API's zijn nu beschikbaar
Opmerkingen
Een applet is een Java-toepassing die normaal gesproken in een webbrowser wordt uitgevoerd. Het basisidee is om met de gebruiker te communiceren zonder de noodzaak om met de server te communiceren en informatie over te dragen. Dit concept was zeer succesvol rond het jaar 2000, toen internetcommunicatie traag en duur was.
Een applet biedt vijf methoden om hun levenscyclus te regelen.
methode naam | Beschrijving |
---|---|
init() | wordt één keer aangeroepen wanneer de applet wordt geladen |
destroy() | wordt één keer aangeroepen wanneer de applet uit het geheugen wordt verwijderd |
start() | wordt aangeroepen wanneer de applet zichtbaar wordt |
stop() | wordt aangeroepen wanneer de applet overlapt met andere vensters |
paint() | wordt opgeroepen wanneer nodig of handmatig geactiveerd door repaint() aan te roepen |
Minimale applet
Een heel eenvoudige applet tekent een rechthoek en drukt iets op het scherm af.
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);
}
}
De hoofdklasse van een applet strekt zich uit van javax.swing.JApplet
.
Vóór Java 1.2 en de introductie van de swing API-applets was uitgebreid van java.applet.Applet
.
Applets vereisen geen hoofdmethode. Het toegangspunt wordt bestuurd door de levenscyclus. Om ze te gebruiken, moeten ze worden ingesloten in een HTML-document. Dit is ook het punt waar hun grootte is gedefinieerd.
<html>
<head></head>
<body>
<applet code="MyApplet.class" width="400" height="200"></applet>
</body>
</html>
Een GUI maken
Applets kunnen eenvoudig worden gebruikt om een GUI te maken. Ze fungeren als een Container
en hebben een add()
-methode die elke awt
of swing
component awt
.
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);
}
}
Open links vanuit de applet
U kunt de methode getAppletContext()
gebruiken om een AppletContext
object te verkrijgen waarmee u de browser kunt vragen om een link te openen. Hiervoor gebruikt u de methode showDocument()
. De tweede parameter vertelt de browser om een nieuw venster _blank
of degene die de applet _self
toont.
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);
}
}
Afbeeldingen, audio en andere bronnen laden
Java-applets kunnen verschillende bronnen laden. Maar aangezien ze in de webbrowser van de client worden uitgevoerd, moet u ervoor zorgen dat deze bronnen toegankelijk zijn. Applets hebben geen toegang tot clientbronnen als het lokale bestandssysteem.
Als u bronnen van dezelfde URL wilt laden als de applet is opgeslagen, kunt u de methode getCodeBase()
gebruiken om de basis-URL op te halen. Om bronnen te laden, bieden applets de methoden getImage()
en getAudioClip()
om afbeeldingen of audiobestanden te laden.
Laad en toon een afbeelding
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);
}
}
Laad en speel een audiobestand
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();
}
}
Laad en toon een tekstbestand
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 */ }
}
}