Descripción del Applet:

 

  El Applet está formado por dos clases principales que son ambas públicas, una es la clase MiCanvas, y la otra es la clase Principal, por ser ambas públicas están creadas en archivos diferentes.

  Comenzaremos comentando la clase Principal, que como su propio nombre indica, es la más importante de las dos, esta clase es la que controla el Applet, en ella “definimos”, los botones, el cuadro de texto y el cuadro de elección, su situación, y además decimos que información tiene que llegar a la clase MiCanvas cuando presionamos algún botón, elegimos una opción en el cuadro de elección o escribimos algo en el cuadro de texto. Esta clase también cuenta con varios métodos y varios constructores.

  Veamos por ejemplo como hemos definido los botones dentro de la clase principal:

 

boolean isStandalone = false;

Panel panel1 = new Panel();

Panel panel2 = new Panel();

Panel panel3 = new Panel();

Panel panel4 = new Panel();

FlowLayout flowLayout1 = new FlowLayout();

FlowLayout flowLayout2 = new FlowLayout();

FlowLayout flowLayout3 = new FlowLayout();

BorderLayout borderLayout1 = new BorderLayout();

BorderLayout borderLayout2 = new BorderLayout();

Label label1 = new Label();

Choice chNivel = new Choice();

Label label2 = new Label();

TextField tAnchura = new TextField();

Button btnGrafica = new Button();

Button btnBorrar = new Button();



  Donde como vemos tenemos que para introducir el nivel que queremos pintar lo elegimos en un cuadro de elección:

 

Choice chNivel = new Choice();

 

los posibles niveles a elegir son:

 

String str[]={"Nivel 1", "Nivel 2", "Nivel 3", "Nivel 4", "Nivel 5", "Nivel 6",

"Nivel 7", "Nivel 8", "Nivel 9", "Nivel 10",};

for(int i=0; i<str.length; i++){

chNivel.addItem(str[i]);

 

La anchura la introducimos escribiendo en el campo de texto:

 

TextField tAnchura = new TextField();

 

y los botones, para borrar y graficar vienen dados por:

 

Button btnGrafica = new Button();

Button btnBorrar = new Button();

 

  Pasemos ahora a comentar la clase MiCanvas, si la clase principal era una extensión de Applet, la clase MiCanvas va a ser una extensión de Canvas, en esta clase es donde definimos la función a representar como vimos en la teoría la función a representar es:

en el programa en Java, nosotros hacemos:

y=factor*Math.sin(v*argumento);

donde factor y argumento han sido definidos previamente y vienen dados por: 

 

argumento=(nivel*Math.PI)/adibujo;

factor=Math.pow(-1.0,1+nivel)*Math.sqrt(200.0/anchura);

 

  Una vez que tenemos la función definida la dibujamos mediante: 

 

void dibujaFuncion(){

Graphics g=getGraphics();

int x1=150;

int y1=(int) (350-E);

int x2, y2;

for(double v=0; v<200; v+=0.01){

y2= (int)(350-E)-(int)(f(v)*escy);

x2=150+(int)v;

g.drawLine(x1, y1, x2, y2);

x1=x2; y1=y2;

}

g.dispose();

}



  Hay que decir que esta clase se ocupa también de cambiar el color de la gráfica, cada vez que pintamos una nueva función. En esta clase es desde donde controlamos todo lo que pintamos en pantalla:

el dibujo del pozo, (también se encuentra dentro de dibujaFuncion()) 

 

g.setColor(Color.gray);

g.fillRect(0,0,150,400);

g.fillRect(350,0,500,400);

g.fillRect(0,360,500,30);



los ejes y la escala: 

 

g.drawString("POZO INFINITO",200,15);

g.drawString("En/E1",255,40);

g.drawLine(250,20,250,360);

g.setColor(Color.black);

g.drawLine(145,350,150,350);

g.drawString("0",134,354);

g.drawLine(145,300,150,300);

g.drawString("10",130,304);

g.drawLine(145,250,150,250);

g.drawString("20",130,254);

g.drawLine(145,200,150,200);

g.drawString("30",130,204);

g.drawLine(145,150,150,150);

g.drawString("40",130,154);

g.drawLine(145,100,150,100);

g.drawString("50",130,104);

g.drawLine(145,50,150,50);

g.drawString("60",130,54);



  Veamos un ejemplo de cómo ambas clases se pasan información: 

 

void setNuevo(double anchura, int nivel){

adibujo=200.0;

energ = (Math.PI*nivel/anchura)*(Math.PI*nivel/anchura);

energ1= (Math.PI/anchura)*(Math.PI/anchura);

E=5.0*energ/energ1;

E1=energ/energ1;

argumento=(nivel*Math.PI)/adibujo;

factor=Math.pow(-1.0,1+nivel)*Math.sqrt(200.0/anchura);

nGrafica++;

if(nGrafica>13){

nGrafica=0;

}

 

Alojado en Hosting :: LMI