Descripción Funcional y Problemas.

Aplicación Java

    La interfaz de usuario del programa se aprecia en la Figura siguiente:


    Evidentemente, en el caso de que el Applet estuviese incrustado en la página web, la GUI estaría ubicada en el marco superior. El panel rosado corresponde al de Figuras, en que se escoge la forma geométrica que se desea dibujar. El panel celeste contiene las Acciones, que se efectúan sobre las figuras que han sido dibujadas en el panel de Dibujo. Finalmente, en morado está el panel que contiene al botón Web, para acceder a una página web que será desplegada donde sea requerido (por defecto en el marco inferior). En el caso del Applet, la aplicación original tuvo que dejar de lado los iconos en los botones (ver Problema 4.-)

    A continuación se adjuntan las instrucciones para utilizar el Applet.

* Para crear Circulos:
1.- Primer click con botón izq define el punto de inicio.
2.- El movimiento del mouse define el diámetro.
3.- Click con botón derecho para terminar figura.
* Para crear Rectangulos:
1.- Primer click con botón izq define el punto de inicio.
2.- El movimiento del mouse define alto y ancho.
3.- Click con botón derecho para terminar figura.
* Para crear Polylines:
1.- Primer click con botón izq define el punto de inicio.
2.- El movimiento del mouse define el largo de la línea actual
3.- Doble Click con boton izq. (lo usual) genera una nueva línea 
junto al punto final de la anterior.
4.- El movimiento del mouse define el largo de esta nueva línea. 
Repetir 3.- y 4.- para hacer más líneas.
5.- Click con botón derecho para terminar figura.

* Para las acciones se siguieron los lineamientos de la tarea:
* Para Rotar:
1.- Primer click define punto alrededor del cual se rotará.
2.- Segundo click y manteniendo apretado define el ángulo de rotación.
* Para Trasladar:
1.- Click y arrastre para mover la figura.
* Para Escalar.
1.- Primer click define punto inicial.
2.- Segundo click y arrastre define la distancia hacia el punto inicial.
3.- La distancia define el escalamiento.

 Página Web

    En cuanto al uso de la página web, se debe cargar en un navegador con soporte Java el archivo Dibujo.html. Este contiene dos marcos, según se pide en los requerimientos. En el superior se pueden configurar los parámetros del Applet:

* Flotante: Si es "true" el Applet estará contenido en un JFrame. Sino, estará incrustado en Arriba.html. Por defecto: “false”.
* web: Contiene la URL que se quiere desplegar a través del botón Web. Por defecto: http://www.google.cl
* frame: Define el marco en que se desplegará. Por defecto: abajo (Abajo.html).

   La configuración de la página web es bastante simple, siguiendo los lineamientos que aparecen en los archivos del ramo. Se optó por dejar los marcos ajustables a gusto del usuario, según como quiera distribuir la página. Por defecto, los marcos tienen una relación de 70% superior y 30% inferior.

 

Problemas

   Los principales problemas estuvieron relacionados con el funcionamiento del Applet en sí, esto es, del editor de figuras:

1.- El manejo de AffineTransforms es especialmente delicado, ya que la transformación afecta todo el espacio de usuario al mismo tiempo. Un problema fue la necesidad de almacenar las transformaciones antiguas. Esto se resolvió mediante el uso del método getTransform(AffineTransform t), salvando la transformación actual en un objeto tipo AffineTransform para poder implementarlo cada vez que había un llamado a paintComponent. Aún no está del todo depurado este problema, pero la interacción es ahora bastante buena.

2.- El cálculo del ángulo fue bastante difícil. Se echo de menos una clase en Java que permitiera un manejo más cómodo de la rotación angular de los objetos. Uno de los principales problemas es que al rotar un rectángulo este deja de ser un rectángulo desde el punto de vista del programa, por lo que su manejo debe realizarse de otra forma. Al final se escogió un método de rotación que aún no está del todo depurado, pero que funciona relativamente bien.

3.- En un principio, se había implementado un borde en el DrawingPanel con el método setBorder(). Sin embargo, al realizar una transformación el borde también era transformado! Al parecer esto es un bug de Java, según se leyó en su sitio web, ya que por error se toma el borde como si perteneciera gráficamente al panel, cuando técnicamente está fuera de él. Se resolvió el problema quitando el borde y prácticamente no se nota.

4.- Se tuvo que sacar los iconos de los botones (ver figura de GUI) ya que el Applet cometía una infracción de seguridad al tratar de descargar dichos archivos *.gif desde el servidor Web. Para ello se optó por remover los iconos, estropeando un poco el despliegue gráfico de la GUI pero manteniendo la funcionalidad del programa en su totalidad.

 

Inicio