Citat:
Ursprungligen postat av
Proton
En gång i tiden fanns det en html-tagg som hette applet med som kunde starta java-applets ifrån en html-sida om man nu ska vara petig.
Jo, exakt så var ju huvudsyftet med Applets. Däremot var det inte särskilt smidigt under test att behöva köra så, vilket man (eller i alla fall jag) undvek på den tiden.
Citat:
Ursprungligen postat av
Proton
Kollar man på koden ser man årtalet 1997 längst upp. Kan ju konstatera att en hel del hänt i Java-apiet sedan dess med
Ja verkligen, men även om man har överseende med det föråldrade API-användandet, så lämnar koden en hel del att önska i övrigt.
Citat:
Ursprungligen postat av
grabb1948
Det här ser intressant ut..
Beror lite på, skulle jag vilja säga. Inte särskilt intressant om du håller på att lära dig Java i allmänhet. Är det visualiseringen av sorteringsalgoritmerna du är intresserad av så kanske det är kul att se, men inte implementationen.
Kunde inte hålla fingrarna borta från min föreslagna punkt 2 i förra inlägget. Det lockade lite att implementera en minimal men generell AppletViewer igen (har för mig att jag gjort detta... a long time ago, in a century far far away...). Jag har inte testat den med appleten från länken, då jag av säkerhetsskäl inte kör vad som helst från okända källor och inte har tid (eller lust) att granska innehållet, så eventuellt behöver den kompletteras ytterligare. En sak jag kan tänka mig trassla är att viewern inte öppnar ett tillräckligt stort fönster. Men se då till att appleten implementerar getPreferredSize() så borde det lösa sig. Skicka in appletens fullständiga (dvs med paketnamn också) klassnamn som argument och kolla exception messages om den inte startar. Sannolikt fel classname eller classpath i så fall:
Kod:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class AppletViewer extends JFrame {
public static void main(String[] args) throws ReflectiveOperationException {
String fqn = args.length > 0 ? args[0] : "<missing arg>";
Applet a = (Applet) Class.forName(fqn).newInstance();
AppletViewer v = new AppletViewer(a);
SwingUtilities.invokeLater(() -> v.launch());
}
private Applet applet;
public AppletViewer(Applet a) {
applet = a;
}
private void launch() {
applet.init();
JPanel ctrl = new JPanel();
addButton("Start", e -> applet.start(), ctrl);
addButton("Stop", e -> applet.stop(), ctrl);
Container cp = getContentPane();
cp.add(BorderLayout.CENTER, applet);
cp.add(BorderLayout.SOUTH, ctrl);
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addWindowListener(new ShutdownHandler());
setVisible(true);
}
private void addButton(String label, ActionListener l, Container parent) {
JButton b = new JButton(label);
b.addActionListener(l);
parent.add(b);
}
private class ShutdownHandler extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
applet.destroy();
super.windowClosing(e);
}
}
}