Marchesi Fabio mat. 107529 Menu Descrizione del problema Analisi Progetto Implementazione Casi d’uso Concetti e tecniche acquisiti Menu codice TestAppl.java appl.html Descrizione del problema In questa esercitazione ci si propone di creare una pagina html che contenga un’ applicazione semplice per visualizzare delle figure geometriche su un pannello grafico. L’ applicazione deve offrire all’ utente un’ interfaccia grafica che permetta di scegliere ed impostare vari parametri del disegno. L’ applicazione , essendo parte integrante di una pagina web , deve essere accessibile da qualunque host remoto e quindi essere eseguita direttamente nel browser dell’ utente. Analisi Partendo da un software già progettato in precedenza , quello relativo al calcolo e visualizzazione di varie figure geometriche , si va ad aggiungere un’ interfaccia che permetta all’ utente la scelta di varie opzioni : il numero di passi che il plotter deve eseguire , il tipo di figura che deve disegnare (dunque il tipo di macchina genera punti) ed infine un pulsante per avviare la visualizzazione.L’ interfaccia grafica deve essere eseguita all’ apertura della pagina HTML appl.html. Progetto Per implementare ciò che ci viene chiesto ci dobbiamo concentrare sulla parte prettamente grafica e di networking dell’ esercitazione , dato che la parte di disegno vettoriale ci è già nota dal software precedentemente progettato . In particolare ci si concentrerà sull’ addattamento del vecchio main dell’ applicazione in modo da trasformarlo in una applet per definizione richiamabile all’ interno del codice HTML di una pagina web (si è scelto di far partire l’ applicazione all’ apertura della pagina da parte del browser); per operare la trasformazione bisognerà eliminare il main dal componente software originale e sostituirlo con il metodo init caratteristico delle applet . All’ interno di questa applet appena creata si dovrà poi costruire la parte dell’ interfaccia grafica instanziando i vari componenti grafici come già visto nell’ esercitazione sul package SWING di java : questa parte avverrà dunque durante il metodo init() dell’ applet. In fine la procedura di disegno del grafico verrà lanciata direttamente dall’ ascoltatore delle azioni del pulsante “START” . Implementazione TestAppl.java import import import import tools.*; javax.swing.*; java.awt.*; java.awt.event.*; import java.net.URL; /** * Testing some PointGeneration machines. */ public class TestAppl extends JApplet implements ActionListener{ JButton butt=new JButton("START"); JTextField txt=new JTextField("",2); JComboBox combo = new JComboBox(); public int iter; PointGenerator ob; public void init() { Container c = getContentPane(); c.setBackground(SystemColor.window); c.setLayout(new BorderLayout()); SpiralGenerator s = new SpiralGenerator(); Polygen poly= new Polygen(0.2f,0.2f,6,0.3f); PoligonGenerator p= new PoligonGenerator(9,0.5f); combo.addItem(poly); combo.addItem(s); combo.addItem(p); JPanel main = new JPanel(); main.setLayout(new BorderLayout()); JPanel basso = new JPanel(); JPanel centro = new JPanel(); centro.add(combo); centro.setLayout(new FlowLayout()); main.add(centro,BorderLayout.CENTER); main.add(basso,BorderLayout.SOUTH); butt.addActionListener(this); txt.addActionListener(this); basso.add(butt); JLabel lab = new JLabel("Iterazioni"); centro.add(lab); centro.add(txt); c.add(main); } //public AppletDemo() { //this(true);} public void actionPerformed(ActionEvent e){ Object o = e.getSource(); if(o==butt){ // create a Plotter SimplePlotter plotter=new SimplePlotter(300,300); // create a PointGenerator //PointGenerator machine=new Polygen(0.1f,0.2f,6,0.2f); // create a simulation Simulation simulation=new Simulation(); // set the simulation plotter simulation.setCurrentPlotter(plotter); // set the simulation point generator simulation.setCurrentPointGenerator(ob); // set 5 ms as delay between two steps simulation.setDelay(100); // reset the simulation simulation.reset(); // execute a number iter of simulation steps simulation.execute(iter); } if(o==txt){ iter = Integer.parseInt(txt.getText()); } if(o==combo){ ob=(PointGenerator) combo.getSelectedItem();} } } appl.html <HTML><HEAD> <TITLE> Applet </TITLE> </HEAD> <BODY> <APPLET CODE="TestAppl.class" WIDTH=200 HEIGHT=250 > </APPLET> </BODY> </HTML> Casi d’ uso E’ stata usata la applet all’ interno di una pagina web semplicissima creata unicamente per mostrare il funzionamento del software, infatti contiene un unico tag che dichiara il nome della classe java da caricare , la larghezza e l’ altezza della finestra in cui verrà visualizzata l’ applicazione . Concetti e tecniche acquisite In questa esercitazione è stato posto l’ accento sulla creazione di applicazioni che possono essere eseguite da un computer remoto che apra la pagina web che le ospita. Questa tecnica si è molto diffusa sulla rete perché consente di rendere disponibile una applicazione ad un grande numero di utenti a cui non serve altro che un browser dotato di una macchina virtuale java (ormai cosa comune) per usufruire dei servizi di questo software.