RELAZIONE 6: APPLET
LUCIA PIRONI MATR. 36545
Gli obiettivi di questa esercitazione sono la costruzione e l’esplorazione degli Applet Java.
Descrizione del problema

Rendere l’applicazione creata nell’esercitazione 4 fruibile via Internet. In pratica creare un
applet che rispecchi il funzionamento di uno dei componenti software che testa una o più
macchine genera punti. Dalla pagina web deve essere possibile far partire la simulazione e
decidere il numero di interazioni.
 Costruire una pagina HTML che permetta di utilizzare l’applet costruito.
Analisi
L’applet deve contenere i dati relativi alla figura da disegnare e deve lanciare la simulazione.
Progetto
Ho scelto di visualizzare tramite l’applet poligoni regolari. L’applet usa un DrawPadPlotter e e fa
eseguire una simulazione per creare poligoni. Viene anche impostato un campo di testo per
l’inserimento da parte dell’utente del numero di iterazioni. Bisogna poi implemenatare il pannello
da disegnare ed ,infine, creare la pagina HTML che richiama l’applet.
Implementazione
/*
* Applet per testare una macchina genera punti
*/
import java.awt.event.*;
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.event.*;
import tools.*;
public class AppletDraw extends JApplet implements ActionListener{
Container c;
JPanel shapePanel;
JButton start;
JFrame shapeFrame;
JTextField numofiter;
Plotter plot;
public static Simulation simulation;
public static int iteractions;
//Start
public void init() {
JPanel p;
//Simulation
plot = new DrawPadPlotter();
simulation=new Simulation();
simulation.setCurrentPlotter(plot);
simulation.setDelay(100);
//Container
c=getContentPane();
c.setLayout(new BorderLayout());
//Button
start=new JButton("Start");
start.addActionListener(this);
p=new JPanel(new FlowLayout());
p.add(start);
c.add(p,BorderLayout.WEST);
//Iteractions
iteractions=10;
numofiter=new JTextField(7);
numofiter.setText(""+iteractions);
p=new JPanel(new FlowLayout());
p.add(new JLabel("Iteractions: "));
p.add(numofiter);
c.add(p,BorderLayout.NORTH);
//Show the frame
shapeFrame.dispose();
shapeFrame=new JFrame("Regular Polygon");
shapeFrame.setBounds(500,20,200,400);
shapePanel=new RegPolyPanel();
shapeFrame.getContentPane().add(shapePanel);
shapeFrame.show();
}
public void actionPerformed (ActionEvent ae){
String argButton=ae.getActionCommand();
if("Start".equals(argButton)){
//num of iteractions
int i;
try{
i=Integer.parseInt(numofiter.getText());
iteractions=i;
}
catch(NumberFormatException nfe){
numofiter.setText(""+iteractions);
}
}
}}
/*Classe RegPolyPanel
*Classe che produce un Frame per passare i dati del poligono che si vuole disegnare*/
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import tools.*;
public class RegPolyPanel extends JPanel implements ActionListener{
/*
*Private fields and variables
*/
JTextField
xpTF,
ypTF,
xcTF,
ycTF,
nTF,
sTF;
JButton d;
/**
* Constructs a new RegPolyPanel.
*/
public RegPolyPanel() {
super(new GridLayout(7,1));
JPanel p;
d=new JButton("Start");
d.addActionListener(this);
xcTF=new JTextField(7);
ycTF=new JTextField(7);
xpTF=new JTextField(7);
ypTF=new JTextField(7);
nTF=new JTextField(7);
sTF=new JTextField(7);
// Builds the frame
p=new JPanel(new FlowLayout());
p.add(new JLabel("Xcenter"));
p.add(xcTF);
add(p);
p=new JPanel(new FlowLayout());
p.add(new JLabel("Ycenter"));
p.add(ycTF);
add(p);
p=new JPanel(new FlowLayout());
p.add(new JLabel("Xangle"));
p.add(xpTF);
add(p);
p=new JPanel(new FlowLayout());
p.add(new JLabel("yangle"));
p.add(ypTF);
add(p);
p=new JPanel(new FlowLayout());
p.add(new JLabel("N sides"));
p.add(nTF);
add(p);
p=new JPanel(new FlowLayout());
p.add(new JLabel("Size"));
p.add(sTF);
add(p);
p=new JPanel(new FlowLayout());
p.add(d);
add(p);
}
public void actionPerformed(ActionEvent ae) {
int
xc=0,
yc=0,
xp=0,
yp=0,
n=0,
s=0;
Simulation sim;
String argButton=ae.getActionCommand();
if ("Start".equals(argButton)) {
try {
xc=Integer.parseInt(xcTF.getText());
yc=Integer.parseInt(ycTF.getText());
xp=Integer.parseInt(xpTF.getText());
yp=Integer.parseInt(ypTF.getText());
n=Integer.parseInt(nTF.getText());
s=Integer.parseInt(sTF.getText());
// If OK draws the shape
AppletDraw.simulation.setCurrentPointGenerator(new PoliGenerator(xc,yc,xp,yp,n,s));
AppletDraw.simulation.reset();
AppletDraw.simulation.execute(AppletDraw.iteractions);
}
catch (NumberFormatException nfe) {}
}
}
}
Codice HTML
<HTML>
<HEAD>
<TITLE> AppletDraw </TITLE>
</HEAD>
<BODY>
<APPLET CODE="AppletDraw.class" WIDTH=300 HEIGHT=100>
</APPLET>
</BODY>
</HTM
Conclusioni
Con questa esercitazione ci siamo avvicinati al campo d’uso più vasto di Java, che è molto usato
proprio per la possibilità di creare applet. Un applet in sostanza è una applicazione che viene
eseguita da un browser Internet. Ma è pur sempre un’applicazione Java: posso infatti creare un
applet facendo solo qualche modifica ad un’applicazione (grafica) tenendo conto che:
- un’applet non deve creare un frame principale;
- non ha un main;
- usa 4 metodi standard ( init(), start(), stop(), destroy()).