Ungefär motsvarande föreläsningsanteckningar från förra året: Applet-delen av java012.pdf
Den senaste just nu heter 1.4.2_02. Finns för Windows, Linux och Solaris (som är Suns egen Unix-variant). Ladda ner gratis från http://java.sun.com/j2se/1.4.2/download.html. Innehåll: javac, java, appletviewer mm
Stor förändring i Java 1.2, kanske främst just det nya fönsterpaketet Swing. Därför kallas Java 1.2 och senare för Java 2.
import java.awt.*; import javax.swing.*; public class BoringApplet extends JApplet { public void init() { getContentPane().add(new JLabel("Boring Applet!")); } } // class BoringApplet
Gamla AWT: Applet, Label osv.
Swing: JApplet, JLabel osv.
Språk:
Filen applet.html:
Appleten i Mozilla under Linux:<html> <head> <title>A web page with a simple applet</title> </head> <body> <applet code="BoringApplet" width="200" height="200"> </applet> </body> </html>
Appleten i Internet Explorer under Windows 98:
Har du en Java-plugin i din webbläsare? I så fall kan du kanske se appleten här, "på riktigt". (Men läs mer nedan ifall det inte skulle funka.)
Alternativ: Använd en plugin! Men då krävs mer komplicerad HTML-kod. HtmlConverter, som följer med SDK, kan översätta enkla <applet>-taggar till den nya HTML-koden:
Den nya HTML-koden, filen applet-c.html:HtmlConverter applet.html
Funkar den koden bättre i din webbläsare? Vi provar här:<html> <head> <title>A web page with a simple applet</title> </head> <body> <!--"CONVERTED_APPLET"--> <!-- HTML CONVERTER --> <OBJECT classid = "clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA" codebase = "http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab#Version=1,4,2,0" WIDTH = "200" HEIGHT = "200" > <PARAM NAME = CODE VALUE = "BoringApplet" > <PARAM NAME = "type" VALUE = "application/x-java-applet;jpi-version=1.4.2"> <PARAM NAME = "scriptable" VALUE = "false"> <COMMENT> <EMBED type = "application/x-java-applet;jpi-version=1.4.2" \ CODE = "BoringApplet" \ WIDTH = "200" \ HEIGHT = "200" \ scriptable = false \ pluginspage = "http://java.sun.com/products/plugin/index.html#download"> <NOEMBED> </NOEMBED> </EMBED> </COMMENT> </OBJECT> <!-- <APPLET CODE = "BoringApplet" WIDTH = "200" HEIGHT = "200"> </APPLET> --> <!--"END_CONVERTED_APPLET"--> </body> </html>
På frågan om vad som egentligen är rätt sätt svarar en kollega:
Jag grävde ner mig i det där träsket i somras. Det är totalt urflippat! Jag kom fram till att det enda sättet som är portabelt är <applet>. Att trigga installation av rätt plugin-version är bara inte att tänka på, inte ens om man bara begränsar sig till IE och Mozilla.
För den stackare som måste gräva ner sig ännu mer finns mer dokumentation hos Sun.
Slutsats: Man ska inte hoppas för mycket på att det där med Java-appletar funkar av sig självt. Portabiliteten kan det också vara lite si och så med.
Annan fördel: Man slipper problem med cachade gamla versioner av appleten i webbläsaren.
(Inte appletviewer BoringApplet!)appletviewer applet.html
Kompilera Java-filen och starta appletvisaren:// <applet code="BoringApple2t" width="200" height="200"> // </applet> import java.awt.*; import javax.swing.*; public class BoringApplet2 extends JApplet { public void init() { getContentPane().add(new JLabel("Boring Applet!")); } } // class BoringApplet2
javac BoringApplet2.java appletviewer BoringApplet2.java
Lägg bara till en main-metod!
// <applet code="BoringApplet3" width="200" height="200"> // </applet> import java.awt.*; import javax.swing.*; public class BoringApplet3 extends JApplet { public void init() { getContentPane().add(new JLabel("Boring Applet!")); } public static void main(String[] args) { JApplet applet = new BoringApplet3(); JFrame frame = new JFrame("BoringApplet3"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(applet); frame.setSize(200, 200); applet.init(); applet.start(); frame.setVisible(true); } } // class BoringApplet3
Läs om Swing i kapitel 14, Creating Windows & Applets, i Bruce Eckels Thinking in Java, 3d Ed.
(Kräver lösenord. Ledtråd: Både användarnamnet och lösenordet är ett populärt programspråk på fyra bosktäver, skrivet med liten bokstav.)
Några bilder på appleten Sqrt. Notera att layout-hanteraren (engelska: layout manager) FlowLayout flyttar om sakerna.// <applet code="Sqrt" width="300" height="200"></applet> import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Sqrt extends JApplet { private JLabel label = new JLabel("Här visas roten"); private JTextField text = new JTextField("Skriv talet här"); private JButton button = new JButton("Visa rot!"); private ButtonListener bl = new ButtonListener(); public void init() { button.addActionListener(bl); Container cp = getContentPane(); cp.setLayout(new FlowLayout()); cp.add(text); cp.add(button); cp.add(label); } // Inre klass för att lyssna på knapp class ButtonListener implements ActionListener { // Hantera klick på roten-ur-knapp public void actionPerformed(ActionEvent event) { String numbuf = text.getText(); try { float num = Float.parseFloat(numbuf); float res = (float)Math.sqrt(num); if (Float.isNaN(res)) label.setText("Det måste vara ett positivt tal."); else label.setText("Roten ur " + num + " är " + res); } catch (NumberFormatException exc) { label.setText("'" + numbuf + "' är inte ett tal."); } } // actionPerformed } // class ButtonListener } // class Sqrt
Appleten på riktigt (om det fungerar i din webbläsare):
Utseende:// Adapted from "Button2" in "Thinking in Java", 3d Ed // <applet code=Buttons width=200 height=75></applet> import javax.swing.*; import java.awt.event.*; import java.awt.*; public class Buttons extends JApplet { private JButton b1 = new JButton("Bing"), b2 = new JButton("Bong"); private JTextField txt = new JTextField(10); class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { String name = ((JButton)e.getSource()).getText(); txt.setText(name); } } // class ButtonListener private ButtonListener bl = new ButtonListener(); public void init() { b1.addActionListener(bl); b2.addActionListener(bl); Container cp = getContentPane(); cp.setLayout(new FlowLayout()); cp.add(b1); cp.add(b2); cp.add(txt); } } // class Buttons
Appleten på riktigt (om det fungerar i din webbläsare):
java.lang.Object java.awt.Component java.awt.Container java.awt.Panel java.applet.Applet javax.swing.JApplet