Java Language
applets
Sök…
Introduktion
Applets har varit en del av Java sedan det officiellt släpptes och har använts för att lära Java och programmering under ett antal år.
Under de senaste åren har en aktiv drivkraft för att flytta bort från Applets och andra webbläsar-plugins, med vissa webbläsare blockerat dem eller aktivt inte stött dem.
2016 meddelade Oracle sina planer på att avskriva plugin-programmet och flytta till ett plugin-fritt webb
Nyare och bättre API: er finns nu tillgängliga
Anmärkningar
En applet är en Java-applikation som normalt körs i en webbläsare. Den grundläggande idén är att interagera med användaren utan att behöva interagera med servern och överföra information. Detta koncept var mycket framgångsrikt år 2000 då internetkommunikationen var långsam och dyr.
En applet erbjuder fem metoder för att kontrollera deras livscykel.
metodnamn | beskrivning |
---|---|
init() | kallas en gång när appleten laddas |
destroy() | kallas en gång när appletten tas bort från minnet |
start() | kallas när appleten blir synlig |
stop() | kallas när appleten överlappas av andra fönster |
paint() | kallas vid behov eller utlöses manuellt genom att ringa repaint() |
Minimal applet
En mycket enkel applet ritar en rektangel och skriver ut en sträng något på skärmen.
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);
}
}
Huvudklassen för en applet sträcker sig från javax.swing.JApplet
.
Innan Java 1.2 och introduktionen av swing-API-appleterna hade utvidgats från java.applet.Applet
.
Applets kräver ingen huvudmetod. Ingångspunkten styrs av livscykeln. För att kunna använda dem måste de vara inbäddade i ett HTML-dokument. Detta är också punkten där deras storlek definieras.
<html>
<head></head>
<body>
<applet code="MyApplet.class" width="400" height="200"></applet>
</body>
</html>
Skapa ett GUI
Applets kan lätt användas för att skapa ett GUI. De fungerar som en Container
och har en add()
metod som tar alla awt
eller swing
komponent.
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);
}
}
Öppna länkar från appletten
Du kan använda metoden getAppletContext()
att få ett AppletContext
objekt som låter dig begära webbläsaren att öppna en länk. För detta använder du metoden showDocument()
. Dess andra parameter berättar för webbläsaren att använda ett nytt fönster _blank
eller det som visar 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);
}
}
Laddar bilder, ljud och andra resurser
Java-appletar kan ladda olika resurser. Men eftersom de körs i klientens webbläsare måste du se till att dessa resurser är tillgängliga. Applets har inte tillgång till klientresurser som det lokala filsystemet.
Om du vill ladda resurser från samma URL som appleten är lagrad kan du använda metoden getCodeBase()
att hämta bas-URL. För att ladda resurser erbjuder getImage()
metoderna getImage()
och getAudioClip()
att ladda bilder eller ljudfiler.
Ladda och visa en bild
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);
}
}
Ladda och spela en ljudfil
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();
}
}
Ladda och visa en textfil
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 */ }
}
}