Este documento resume un proyecto final de programación orientada a objetos sobre un programa gráfico. Explica brevemente la síntesis, objetivo y marco teórico del proyecto, incluyendo conceptos como herencia, arrays, tipos de colecciones, jerarquía de clases y interfaces en Java. También describe el desarrollo visual del programa y conclusiones.
1. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
ESCUELA POLITECNICA
NACIONAL
Proyecto Final de Programación Orientada a Objetos
Alumno: Danny Novillo
04/11/2009
Septiembre-Marzo
2009 - 2010
2. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
INDICE
1. SINTESIS
2. OBJETIVO
3. MARCO TEORICO
3.1 Herencia
3.2 Arrays
3.3 Tipos de Colecciones
3.3.1 bit set
3.3.2 Stack
3.3.3 Hashtable
3.4 Jerarquía de clases en java
3.5 Concepto de Interfaces Graficas
4. DESARROLLO DEL PROGRAMA
4.1 Visualización del programa
5. CONCLUSIONES
3. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
SINTESIS
Este proyecto trata de un programa que sirve para graficar figuras en un entorno
amigable para el usuario final el cual puede ajustar sus propios tonos de color y realizar
cualquier tipo de dibujo o importar un dibujo para modificarlo, grabar los mismos.
OBJETIVO
Dar a conocer el manejo de las opciones graficas que tiene java para el desarrollo de
programas en este caso para realizar gráficos, importarlos, modificarlos, y a la vez
obtener una respuesta correcta de los dispositivos de entrada y salida del ordenador.
MARCO TEÓRICO
Para tener una mejor visión acerca de cómo fue implementado el proyecto daré a conocer
varios conceptos.
· Herencia:
La herencia permite que se pueden definir nuevas clases basadas en clases
existentes, lo cual facilita re-utilizar código previamente desarrollado.
Si una clase deriva de otra (extends) hereda todas sus variables y métodos. La
clase derivada puede añadir nuevas variables y métodos y/o redefinir las
variables y métodos heredados.
En Java, a diferencia de otros lenguajes orientados a objetos, una clase sólo
puede derivar de una única clase, con lo cual no es posible realizar herencia
múltiple en base a clases. Sin embargo es posible “simular” la herencia
múltiple en base a las interfaces.
· Arrays
En este caso vamos a hablar de los arrays pero como almacén de objetos.
Hay dos características que diferencian a los arrays de cualquier otro tipo
de colección: eficiencia y tipo. El array es la forma más eficiente que
Java proporciona para almacenar y acceder a una secuencia de objetos. El
array es una simple secuencia lineal, que hace que el acceso a los
elementos sea muy rápido, pero el precio que hay que pagar por esta
velocidad es que cuando se crea un array su tamaño es fijado y no se
puede cambiar a lo largo de la vida del objeto. Se puede sugerir la
creación de un array de tamaño determinado y luego, ya en tiempo de
ejecución, crear otro más grande, mover todos los objetos al nuevo y
borrar el antiguo. Esto es lo que hace la clase Vector, pero un Vector es
menos eficiente que un array, en cuestiones de velocidad.
4. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
Los otros tipos de colecciones disponibles en Java: Vector, Stack y
Hashtable; pueden contener cualquier tipo de objeto, sin necesidad de
que sea de un tipo definido. Esto es así porque tratan a sus elementos
como si fuesen Object, la clase raíz de todas las clases Java. Esto es
perfecto desde el punto de vista de que se construye solamente una
colección, y cualquier tipo de objeto puede ser almacenado en ella. Pero
aquí es donde los arrays vuelven a ser más eficientes que las colecciones
genéricas, porque cuando se crea un array hay que indicar el tipo de
objetos que va a contener. Esto significa que ya en tiempo de
compilación se realizan comprobaciones para que no se almacene en el
array ningún objeto de tipo diferente al que está destinado a contener, ni
que se intente extraer un objeto diferente. Desde luego, Java controlará
de que no se envíe un mensaje inadecuado a un objeto, ya sea en tiempo
de compilación como en tiempo de ejecución.
Así que, tanto por eficiencia como por comprobación de tipos, es mejor
utilizar un array siempre que se pueda. Sin embargo, cuando se trata de
resolver un problema más general, los arrays pueden ser muy restrictivos
y es entonces cuando hay que recurrir a otro tipo de almacenamiento de
datos.
· Tipos de Colecciones
Con el JDK 1.0 y 1.1 se proporcionaban librerías de colecciones muy básicas,
aunque suficientes para la mayoría de los proyectos. En el JDK 1.2 ya se amplía
esto y, además, las anteriores colecciones han sufrido un profundo rediseño. A
continuación se verán cada una de ellas por separado para dar una idea del
potencial que se ha incorporado a Java.
Vector
El Vector es muy simple y fácil de utilizar. Aunque los métodos más
habituales en su manipulación son addElement() para insertar elementos
en el Vector, elementAt() para recuperarlos y elements() para obtener una
Enumeration con el número de elementos del Vector, lo cierto es que
hay más métodos, pero no es el momento de relacionarlos todos, así que,
al igual que sucede con todas las librerías de Java, se remite al lector a
que consulte la documentación electrónica que proporciona Javasoft, para
conocer los demás métodos que componen esta clase.
Las colecciones estándar de Java contienen el método toString(), que
permite obtener una representación en forma de String de sí mismas,
incluyendo los objetos que contienen. Dentro de Vector, por ejemplo,
toString() va saltando a través de los elementos del Vector y llama al
método toString() para cada uno de esos elementos. En caso, por poner
un ejemplo, de querer imprimir la dirección de la clase, parecería lógico
5. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
referirse a ella simplemente como this (los programadores C++ estarán
muy inclinados a esta posibilidad).
BitSet
Se llama así lo que en realidad es un Vector de bits. Lo que ocurre es que
está optimizado para uso de bits. Bueno, optimizado en cuanto a tamaño,
porque en lo que respecta al tiempo de acceso a los elementos, es
bastante más lento que el acceso a un array de elementos del mismo tipo
básico.
Además, el tamaño mínimo de un BitSet es de 64 bits. Es decir, que si se
está almacenando cualquier otra cosa menor, por ejemplo de 8 bits, se
estará desperdiciando espacio.
En un Vector normal, la colección se expande cuando se añaden más
elementos. En el BitSet ocurre los mismo pero ordenadamente. Se utiliza
el generador de números aleatorios para obtener un byte, un short y un
int, que son convertidos a su patrón de bits e incorporados al BitSet.
Stack
Un Stack es una Pila, o una colección de tipo LIFO (last-in, first-out). Es
decir, lo último que se coloque en la pila será lo primero que se saque.
Como en todas las colecciones de Java, los elementos que se introducen y
sacan de la pila son Object, así que hay que tener cuidado con el moldeo
a la hora de sacar alguno de ellos.
Los diseñadores de Java, en vez de utilizar un Vector como bloque para
crear un Stack, han hecho que Stack derive directamente de Vector, así
que tiene todas las características de un Vector más alguna otra propia ya
del Stack.
Hashtable
Un Vector permite selecciones desde una colección de objetos utilizando
un número, luego parece lógico pensar que hay números asociados a los
objetos. Bien, entonces ¿qué es lo que sucede cuando se realizan
selecciones utilizando otros criterios? Un Stack podría servir de ejemplo:
su criterio de selección es "lo último que se haya colocado en el Stack".
Si rizamos la idea de "selección desde una secuencia", nos encontramos
con un mapa, un diccionario o un array asociativo. Conceptualmente,
todo parece ser un vector, pero en lugar de acceder a los objetos a través
de un número, en realidad se utiliza otro objeto. Esto nos lleva a utilizar
claves y al procesado de claves en el programa. Este concepto se expresa
en Java a través de la clase abstracta Dictionary. El interfaz para esta
clase es muy simple:
ü size(), indica cuántos elementos contiene,
6. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
ü isEmpty(), es true si no hay ningún elemento,
ü put( Object clave,Object valor), añade un valor y lo asocia con una
clave
ü get( Object clave ), obtiene el valor que corresponde a la clave que se
indica
ü remove( Object clave ), elimina el par clave-valor de la lista
ü keys(), genera una Enumeration de todas las claves de la lista
ü elements(), genera una Enumeration de todos los valores de la lista
· La jerarquía de clases de Java (API)
Durante la generación de código en Java, es recomendable y casi
necesario tener siempre a la vista la documentación on-line del API de
Java 1.1 ó Java 1.2. En dicha documentación es posible ver tanto la
jerarquía de clases, es decir la relación de herencia entre clases, como
la información de los distintos packages que componen las librerías
base de Java.
Es importante distinguir entre lo que significa herencia y package. Un
package es una
agrupación arbitraria de clases, una forma de organizar las clases. La
herencia sin embargo consisteen crear nuevas clases en base a otras
ya existentes. Las clases incluidas en un package no derivan en general
de la misma clase.
En la documentación on-line se presentan ambas visiones: “Package
Index” y “Class
Hierarchy”. La primera presenta la estructura del API de Java agrupada
por packages, mientras que en la segunda aparece la jerarquía de
clases. Hay que resaltar el hecho de que todas las clases en Java son
derivadas de la clase java.lang.Object, por lo que heredan todos los
métodos y variables de ésta.
Si se selecciona una clase en particular, la documentación muestra una
descripción detallada de todos los métodos y variables de la clase. A su
vez muestra su herencia completa (partiendo de la clase
java.lang.Object).
· Concepto de Interface
Una interface es un conjunto de declaraciones de funciones. Si una clase implementa
(implements) una interface, debe definir todas las funciones especificadas por la
interface. Una clase puede implementar más de una interface, representando una
forma alternativa de la herencia múltiple.
7. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
Una interface puede derivar de otra o incluso de varias interfaces, en cuyo caso
incorpora
todos los métodos de las interfaces de las que deriva.
· Diseño de interfaces gráficas en Java
En si el manejo de una interfaz grafica en java es un poco complicado debido a que las
características de esta plataforma, en el diseño de interfaces gráficas de Java se
implementa el patrón MVC (Modelo Vista Controlador) que, como su definición lo indica,
separa los datos de una aplicación, la interfaz de usuario y la lógica de control en tres
capas distintas. Al hablar de la interfaz de usuario se refiere a la parte de los programas
con la que los usuarios se comunicaran con nuestras aplicaciones, mientras que la lógica
de control se refiere a la forma en la que se ejecutarán las acciones que involucre un
programa. En el MVC se habla de tres niveles en la aplicación, los cuales son el modelo
(que contiene la gestión de los datos y la lógica de negocios), la vista (se ocupa de la
aparición de los componentes de la interfaz de usuario en pantalla) y el controlador (que
gestiona los eventos de entrada generados en la vista).
Además, resulta que en Java nos encontramos con varios conceptos muy interesantes,
como la utilización de ubicaciones relativas en lugar de absolutas para los componentes de
la interfaz gráfica, el contar con diferentes tipos de manejadores para la aparición de estos
componentes y un control de eventos con varias opciones de implementación.
¿Y por qué Java? Para hacerlo corto diré que por una preferencia personal hacia este
lenguaje, además de sus ya conocidas características: independiente de la plataforma,
8. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
robusto, versátil, de libre utilización, cuenta con una gran comunidad de desarrolladores y
una serie de aplicaciones IDE entre las que encontramos Eclipse, que es software 100%
libre.
En el título hablo de Java 2, porque fue a partir de la versión 2 de este lenguaje que se dio
un gran cambio en el desarrollo de interfaces gráficas, mejorando los funcionamientos de
los programas por fortuna, pero aumentando un tanto la complejidad de la programación
al introducir la biblioteca de clases Swing, de la que hablaremos más adelante.
La herramienta que utilizaré para los ejemplos es la más reciente versión de Eclipse, es
decir el Eclipse Galileo, que pueden descargar desde la ubicación anterior (es la segunda
opción de la lista, deje este enlace para que puedan seleccionar la descarga según su
sistema operativo).
Hay que señalar que el entorno de desarrollo de Eclipse por defecto no cuenta con un
editor visual para desarrollar interfaces gráficas en Java, por lo que en los ejemplos
crearemos el código completo de la interface, no solo por esta característica del entorno,
sino porque considero muy valioso conocer los detalles de la implementación de la vista y
el controlador de las aplicaciones. Sin embargo, para los que ya sean más veteranos, les
interesará saber que existe un complemento para Eclipse que permite incluir un editor
visual para interfaces gráficas, llamado Visual Editor Proyect. Aunque se encuentra en
desarrollo, ya permite incluir
También pueden revisar esta página que contiene un video-tutorial sobre el desarrollo de
proyectos e interfaces gráficas en Java usando Eclipse, en el cual se incluyen las
instrucciones para emplear el mencionado editor visual de interfaces gráficas.
9. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
DESARROLLO DEL PROGRAMA
package paintwdp;
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.io.*;
public class Colores extends JFrame implements
ChangeListener,ActionListener,MouseListener, MouseMotionListener{
//Main instancia el frame y le doy caracteristicas
public static void main(String[]args){
Colores slider = new Colores();
slider.setSize(900,450);
slider.setTitle("DIBUJO");
slider.setLocationRelativeTo(null);
slider.setVisible(true);
}
//Variables que ocupo para revolver colores
int Menor = 0;
int Mayor = 255;
int medio = 127;
int colorinicial=127;
int uX=0;
int uY=0;
int crojo1=127;
int cazul1=127;
int cverde1=127;
int click=0,c=0,c2=4;
Relog time=new Relog();
//ocupo algunos paneles para los sliders y el area de dibujo
JSlider rojo;
JSlider verde;
JSlider azul;
JPanel panelColor1;
JPanel panelcolor2;
JPanel panelcolor3;
10. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
JPanel dibujar;
JPanel cambiacolor;
JButton pre=new JButton("SALIR");
JButton cc=new JButton("Dibujar con Click");
JButton sc=new JButton("Dibujar sin Click");
JButton br=new JButton ("Borrador");
JButton imagen=new JButton("Abrir imagen");
JButton limagen=new JButton("Limpiar imagen");
JLabel r=new JLabel("ROJO 127");
JLabel v=new JLabel("VERDE 127");
JLabel a=new JLabel("AZUL 127");
JLabel img=new JLabel(" ");
//Constructor de mi aplicacion
public Colores(){
Container c;
c=getContentPane();
c.setBackground(Color.WHITE);
c.setLayout(null);
v.setSize(135,20);
v.setLocation(360,55);
v.setFont(new Font("Arial",Font.BOLD,12));
v.setForeground(new Color(0,127,0));
c.add(v);
a.setSize(135,20);
a.setLocation(360,45);
a.setFont(new Font("Arial",Font.BOLD,12));
a.setForeground(new Color(0,0,127));
c.add(a);
r.setSize(135,20);
r.setLocation(360,35);
r.setFont(new Font("Arial",Font.BOLD,12));
r.setForeground(new Color(127,0,0));
c.add(r);
pre.setSize(135,20);
pre.setLocation(360,5);
pre.setFont(new Font("Arial",Font.BOLD,12));
pre.setForeground(Color.BLUE);
c.add(pre);
pre.addActionListener(this);
11. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
cc.setSize(135,20);
cc.setLocation(360,85);
cc.setFont(new Font("Arial",Font.BOLD,12));
cc.setForeground(Color.BLUE);
c.add(cc);
cc.addActionListener(this);
sc.setSize(135,20);
sc.setLocation(360,115);
sc.setFont(new Font("Arial",Font.BOLD,12));
sc.setForeground(Color.BLUE);
c.add(sc);
sc.addActionListener(this);
br.setSize(135,20);
br.setLocation(360,145);
br.setFont(new Font("Arial",Font.BOLD,12));
br.setForeground(Color.BLUE);
c.add(br);
br.addActionListener(this);
img.setVisible(false);
imagen.setSize(135,20);
imagen.setLocation(360,175);
imagen.setFont(new Font("Arial",Font.BOLD,12));
imagen.setForeground(Color.BLUE);
c.add(imagen);
imagen.addActionListener(this);
limagen.setSize(135,20);
limagen.setLocation(360,205);
limagen.setFont(new Font("Arial",Font.BOLD,12));
limagen.setForeground(Color.BLUE);
c.add(limagen);
limagen.addActionListener(this);
panelColor1=new JPanel();
panelColor1.setBackground(Color.WHITE);
panelColor1.setBorder(BorderFactory.createTitledBorder("ROJO"));
panelColor1.setSize(100,250);
panelColor1.setLocation(5,5);
c.add(panelColor1);
rojo=createSlider(medio);
panelColor1.add(rojo);
panelcolor2=new JPanel();
12. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
panelcolor2.setBackground(Color.WHITE);
panelcolor2.setBorder(BorderFactory.createTitledBorder("AZUL"));
panelcolor2.setSize(100,250);
panelcolor2.setLocation(125,5);
c.add(panelcolor2);
azul=createSlider(medio);
panelcolor2.add(azul);
panelcolor3=new JPanel();
panelcolor3.setBackground(Color.WHITE);
panelcolor3.setBorder(BorderFactory.createTitledBorder("VERDE"));
panelcolor3.setSize(100,250);
panelcolor3.setLocation(245,5);
c.add(panelcolor3);
verde=createSlider(medio);
panelcolor3.add(verde);
cambiacolor=new JPanel();
cambiacolor.setBackground(new Color(colorinicial,colorinicial,colorinicial));
cambiacolor.setBorder(BorderFactory.createTitledBorder("COLOR MEZCLADO"));
cambiacolor.setSize(300,100);
cambiacolor.setLocation(30,300);
c.add(cambiacolor);
dibujar=new JPanel();
dibujar.setBackground(new Color(colorinicial,colorinicial,colorinicial));
dibujar.setBorder(BorderFactory.createTitledBorder("AREA PARA DIBUJAR"));
dibujar.setBackground(Color.WHITE);
dibujar.setSize(370,380);
dibujar.setLocation(510,20);
c.add(dibujar);
addMouseListener(this);
addMouseMotionListener(this);
}
//Este es el oyente de cambios para los JSliders
public void stateChanged(ChangeEvent e) {
int crojo,cazul,cverde;
//Cambia el valor de los colores con respecto al slider
crojo=rojo.getValue();
cazul=azul.getValue();
cverde=verde.getValue();
//cambia el color de el panel inferior
cambiacolor.setBackground(new Color(crojo,cverde,cazul));
r.setText("ROJO "+ crojo);
13. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
r.setForeground(new Color(crojo,0,0));
v.setText("VERDE "+ cverde);
v.setForeground(new Color(0,cverde,0));
a.setText("AZUL "+ cazul);
a.setForeground(new Color(0,0,cazul));
crojo1=crojo;
cazul1=cazul;
cverde1=cverde;
}
//escuchador de eventos de los botones
public void actionPerformed(ActionEvent e){
if(e.getSource()==pre){
System.exit(0);//Sale del sistema
}
if(e.getSource()==cc){
click = 1;//ocupo estas variables para establecer el pinta con o sin click
del mouse
}
if(e.getSource()==sc){
click = 2;//ocupo estas variables para establecer el pinta con o sin click
del mouse
}
if(e.getSource()==br){
click = 3;
}
if(e.getSource()==imagen){
FileDialog fd = new FileDialog(this,"ABRIR",FileDialog.LOAD);
fd.show();
File f = new File( fd.getDirectory(),fd.getFile() );
ImageIcon image = new ImageIcon(f.toString());
dibujar.add(img);
img.setIcon(image);
img.setSize(135,135);
img.setLocation(550,20);
img.setVisible(true);
}
if(e.getSource()==limagen){
img.setVisible(false);
}
}
14. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
//Estos son los escuchadores de raton y en este caso los ocupo para pintar en el
panel
public void mousePressed(MouseEvent ev) {}
public void mouseExited(MouseEvent ev) {}
public void mouseReleased(MouseEvent ev) {}
public void mouseClicked(MouseEvent ev) {}
public void mouseEntered(MouseEvent ev) {}
//Si click vale uno entonces se dibuja apretando el boton del mouse
public void mouseDragged(MouseEvent ev) {
if(click==1){
if(ev.getX()>515&&ev.getX()<880&&ev.getY()>58&&ev.getY()<428){
int uX = ev.getX();
int uY = ev.getY();
Graphics g=getGraphics();
g.setColor(new Color(crojo1,cverde1,cazul1));
g.fillRect(uX, uY, 3, 3);
g.dispose();
}
}
if(click==3){
if(ev.getX()>515&&ev.getX()<880&&ev.getY()>58&&ev.getY()<428){
int uX = ev.getX();
int uY = ev.getY();
Graphics g=getGraphics();
g.setColor(new Color(0,0,0));
g.drawRect(uX, uY, 10, 10);
time.relog(30);
g.setColor(new Color(255,255,255));
g.fillRect(uX, uY, 15, 15);
g.dispose();
}
}
}
//Si click vale dos entonces se dibuja al pasar el mouse sobre el panel
public void mouseMoved(MouseEvent ev) {
if(click==2){
15. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
if(ev.getX()>515&&ev.getX()<880&&ev.getY()>58&&ev.getY()<428){
int uX = ev.getX();
int uY = ev.getY();
Graphics g=getGraphics();
g.setColor(new Color(crojo1,cverde1,cazul1));
g.fillRect(uX, uY, 3, 3);
g.dispose();
}
}
}
//caracteristicas del los sliders
private JSlider createSlider(int VAL) {
JSlider sl=new JSlider();
sl.setOrientation(JSlider.VERTICAL);
sl.setPaintLabels(true);
sl.setPaintTicks(true);
sl.setMinimum(Menor);
sl.setMaximum(Mayor);
sl.setValue(VAL);
sl.setMajorTickSpacing(25);
sl.setMinorTickSpacing(5);
sl.addChangeListener(this);
return sl;
}
package paintwdp;
public class Relog{
public void relog(int n){
//relog
try{Thread.sleep(n);//milisegundos(1000=1s)
}
catch(Exception e){
}
//fin relog
}
}
16. F T ra n sf o F T ra n sf o
PD rm PD rm
Y Y
Y
Y
er
er
ABB
ABB
y
y
bu
bu
2.0
2.0
to
to
ESCUELA POLITÉCNICA NACIONAL
re
re
he
he
k
k
lic
lic
PROGRAMACION ORIENTADA A OBJETOS
C
C
w om w om
w
w
w. w.
A B B Y Y.c A B B Y Y.c
}
VISUALIZACIÓN DE LA APLICACIÓN
CONCLUSIONES
· Java es una plataforma que brinda grandes posibilidades para el desarrollo de applets
y el trabajo con interfaces gráficas.
· En el desarrollo de la aplicación hay que tomar muy en cuenta las definiciones previas
expuestas en este informe para evitar confusiones en la interpretación del programa.
· Es un programa sencillo y tiene una buena interfaz grafica muy amigable para quién lo
vaya a utilizar (en especial los niños).
· Las funciones y código fuente en general que se utiliza en este programa son sencillos
para que otros usuarios lo puedan entender y modificarlo en caso que sea necesario.