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();
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:
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);
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);
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;
}