Newsgroup: it.comp.java
Titolo: Applet senza il JavaPlugin





Ho scritto un applet in Java 2, cioè quello che ho 
studiato nell'ultimo periodo. Nessun problema con il Java Plugin e con 
l'Appletviewer, ma l'explorer non ne vuole sapere. Ho quindi eliminato i 
riferimenti alla libreria swing nel tentativo di riportarlo ad una versione che 
l'explorer comprendesse ma il buio assoluto. Dunque vi allego i tre file 
principali in modo che qualche anima pia mi dica dove diavolaccio è l'errore. 
Dovrebbe semplicemente visualizzarmi un grafico lineare su 
un'azione...


 


Graph.class:


import java.awt.*;


import 
java.applet.Applet;


import java.io.*;


 


public class 
Graph 

extends
 
Applet


{ public void init()


{ fn = getParameter("
filename
");


}


 


public void 
paint(Graphics g)


{ Rectangle d = bounds();


g.drawRect(1,1,d.width-1,d.height-1);


g.setColor(Color.white);


g.fillRect(1,1,d.width-1,d.height-1);


Lineare l = new Lineare(fn);


PuntoQ[] punti = l.getPoint(new Punto(d.width, 
d.height));


int[] xP = new int[punti.length];


int[] yP = new int[punti.length];


int[] VolY = new int[punti.length];


for(int cont = 0; cont < punti.length; cont++)


{ xP[cont] = punti[cont].getX();


yP[cont] = punti[cont].getY();


VolY[cont] = punti[cont].getYVol();


}


g.setColor(Color.green);


g.drawPolyline(xP, yP, punti.length);


g.setColor(Color.gray);


int space = (int)punti[punti.length-1].getX();


Giorno[] gg = l.getGiorni();


int v = space/gg.length;


Font f = new Font("Arial", Font.BOLD, 10);


g.setFont(f);


for(int cont = 0; cont < gg.length; cont++)


{ int xd = cont*v;


g.drawString(gg[cont].toString(), 
xd-18+d.width/20,(int)(d.height*0.9)+9);


g.drawLine(xd+d.width/20,d.height/100,xd+d.width/20,(int)(d.height*0.9));


}


double[] YQ = l.getSQuot(15);


int[] YP = new int[15];


for(int c = 0; c < 15; c++)


{ YP[c] = l.getY(new Punto(d.width, d.height), 
YQ[c]);


g.drawString(YQ[c]+"", xP[xP.length-1]+20, 
YP[c]+5);


g.drawLine(d.width/100, YP[c], xP[xP.length-1]+14,YP[c]); 



}


g.setColor(Color.blue);


for(int cont = 0; cont < punti.length; cont++)


{ g.drawLine(xP[cont], YP[0], xP[cont], 
YP[0]-VolY[cont]);


} 


}


String fn;


}


Grafico.class:


import java.io.*;


import java.util.*;


import java.net.URL;


class Grafico


{ public Grafico(Vector quot)


{ qs = quot; 


}


 


public Grafico(String filename)


{ try


{ URL url = new 
URL("
http://localhost/grafici/
"+filename);


StringTokenizer t;


String date;


Giorno day;


try 


{ BufferedReader in = new BufferedReader(new 
InputStreamReader(url.openStream()));


Vector v = getLine(in);


qs = new Vector();


for(int cont = 0; cont < v.size(); cont++)


{ if(!v.get(cont).equals(""))


{ t = new StringTokenizer((String)v.get(cont)," 
");


if(!(date = t.nextToken()).equalsIgnoreCase("data")) 



{ day = new 
Giorno(Integer.parseInt(date.substring(3,5)),


Integer.parseInt(date.substring(0,2)),Integer.parseInt(date.substring(6,10)));


qs.add(new Quotazione(new 
Double(t.nextToken()).doubleValue(),


new Double(t.nextToken()).doubleValue(),new 
Double(t.nextToken()).doubleValue(),


new 
Double(t.nextToken()).doubleValue(),Integer.parseInt(t.nextToken()), day)); 



}


}


} 


qs.trimToSize();


}


catch(IOException e) {}


}


catch(Exception e)


{}


}


 


public double[] getQuotArray()


{ double[] ch = new double[qs.size()];


for(int n = 0; n<ch.length; n++)


{ ch[n] = ((Quotazione)qs.get(n)).getChius();


}


return ch;


} 


 


public int[] getVolArray()


{ int[] vol = new int[qs.size()];


//int[] vol = new int[10];


for(int n = 0; n<vol.length; n++)


{ vol[n] = ((Quotazione)qs.get(n)).getVol();


//vol[n] = 10;


}


return vol;


}


public double getMax()


{ double[] ch = getQuotArray();


double res = 0;


double[] tmp = (double[])ch.clone();


java.util.Arrays.sort(tmp);


return tmp[tmp.length];


}


 


public double getMin()


{ double[] ch = getQuotArray();


double res = 0;


double[] tmp = (double[])ch.clone();


java.util.Arrays.sort(tmp);


return tmp[0];


}


 


public Vector getLine(BufferedReader in)


{ String s;


Vector v = new Vector();


try


{ while ((s=in.readLine()) != null)


{ v.add(s);


}


}


catch(IOException e)


{}


v.trimToSize();


return v;


}


Vector qs;


}


 


Lineare.class:


import java.util.*;


import java.lang.Math.*;


import java.io.*;


import java.text.*;


public class Lineare extends Grafico


{ public Lineare(Vector quot)


{ super(quot);


}


 


public Lineare(String filename)


{ super(filename);


}


 


public double getMax()


{ double res = 0;


double[] tmp = getQuotArray();


java.util.Arrays.sort(tmp);


return tmp[tmp.length-1];


}


 


public PuntoQ[] getPoint(Punto dim)


{ double[] ch = getQuotArray();


int[] vol = getVolArray();


PuntoQ[] res = new PuntoQ[ch.length];


double dimx = dim.getX()*0.85/ch.length;


for(int n = 0; n<ch.length; n++)


{ res[n] = new 
PuntoQ((int)Math.round((n+1)*dimx+dim.getX()/20), getY(dim,ch[n]), getVolY(dim, 
vol[n]));


}


return res;


}


 


public int getY(Punto dim, double q)


{ int y = dim.getY();


int rap = 
(int)Math.round(dim.getY()/getMax()*1.2);


int res = dim.getY()-(int)Math.round(q*rap);


return res+(int)(y/2.6);


}


public int getVolY(Punto dim, int v)


{ int[] order = getVolArray();


java.util.Arrays.sort(order);


int max = order[order.length-1];


int space = dim.getY()/5;


double rap = ((double)space)/((double)max);


return (int)Math.round(v*rap);


}


public double getQuotFromY(Punto dim, int y)


{ int rap = 
(int)Math.round(dim.getY()/getMax()*1.2);


int q = (dim.getY()-y)/rap;


return q;


}


public Giorno[] getGiorni()


{ int h = 7*((int)(qs.size()/10/7))+1;


int r = qs.size()/h;


Giorno[] gg = new Giorno[r];


for(int c = 0; c<r; c++)


{ gg[c] = ((Quotazione)qs.get(c*h)).getDay();


}


return gg;


}


 


public double[] getSQuot(int num)


{ double dif = getMax()-getMin();


double space = dif/(num-6);


double[] res = new double[num];


for(int c = 0; c < num; c++)


{ res[c] = Appross(getMin()+(c-3)*space, "0.##");


}


return res;


}


public double Appross(double s, String decf)


{ DecimalFormat df = new DecimalFormat(decf);


String a = df.format(s);


String res = "";


for(int cont = 0; cont < a.length(); cont++)


{ if (a.charAt(cont) == ',') { res = a.substring(0, 
cont)+"."+a.substring(cont+1, a.length()); }


}


return new Double(res).doubleValue();


}


}



 
ha scritto nel messaggio 
news:000a01c0727c$a9f08fc0$6d821c97@adlfdl
...







Ma sono file enormi da scaricare... ecco perchè 
vorrei rendere il codice adatta per la jvm dell'explorer. Il plugin lo conosco 
anch'io. Vi chiedo di dare un occhiata al codice e tentare di capire cosa è che 
non va con l'explorer.