1. 2010
ESCUELA POLITECNICA NACIONAL
PROGRAMACIÓN ORIENTADA A OBJETOS
N
Allaica, Hidalgo , Tupiza 1
2. 2010
ESCUELA POLITECNICA NACIONAL
INFORME
TEMA: CREACION DE UNA AGENDA USANDO APPLETS EN JAVA
OBJETIVO:
• Crear una agenda personal adecuada a las exigencias de cada usuario.
MARCO TEORICO
Para la realización de este proyecto se utilizaran frames que permiten la
colocación de los distintos objetos en un lugar determinado.
Esto será implementado en la creación de una Applet.
Objetos utilizados
JButton: Permite la inserción de un boton.
JLabel: Permite la inserción de etiquetas.
JPanel: Permite la inserción de objetos dentro del applet de manera
mas organizada
JTextField: Permite el ingreso de datos
Allaica, Hidalgo , Tupiza 2
3. 2010
ESCUELA POLITECNICA NACIONAL
JComboBox: permite la visualizacion de los datos ingresados en una
barra.
Implementación del programa
CLASE AGENDA
Procedemos a la importación de los elementos, obteniéndolos todos de
la clase SWING y AWT
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
Allaica, Hidalgo , Tupiza 3
4. 2010
ESCUELA POLITECNICA NACIONAL
Cada uno de los objetos llamados cumplen con algún objetivo en particular,
pero los objetos de la clase AWT, son utilizados principalmente para
aplicaciones en ventanas, su entorno visual es muy limitado y por lo tanto
nos ofrece un entorno visual agradable.
Para corregir esto se creo la clase SWING que permita mejorar la
apariencia de los objetos, creando una versión mejorada de la clase AWT.
Creamos una clase que herede los métodos de JApplet e implemente la
interface ActionListener.
o ActionListener: Esta clase es la encargada de esperar a la
escucha de algún suceso que ocurra dentro del applet, por
ejemplo el clic en un botón.
public class AgendaPRO extends JApplet implements ActionListener {
//importacion de metodos de otras clases
Base base=new Base();
o Private: Son modificadores de acceso que permiten solo a la clase
usarlos y no por otra.
//DECLARACION DE STATIC
private JLabel nom;
private JLabel fono;
private JLabel dir;
private JLabel et1;
private JLabel et2;
private JLabel et3;
private JLabel et4;
private JLabel et5;
private JLabel et6;
Allaica, Hidalgo , Tupiza 4
5. 2010
ESCUELA POLITECNICA NACIONAL
//DECLARACION DE BOTONES
private JButton agregar;
private JButton borrar;
private JButton mostrar;
private JButton limpiar;
//DECLARACION DE PANELES
private JPanel contentPane;
private JPanel jPanel1;
private JPanel jPanel2;
private JPanel jPanel3;
private JPanel jPanel4;
private JPanel jPanel5;
private JPanel jPanel6;
//DECLARACION DE EDITS
private JTextField nom_t;
private JTextField fono_t;
private JTextField dir_t;
//DECLARACION DE UN COMBOBOX
private JComboBox Box2;
Creamos un metodo extendido de la clase JApplet para la inicializacion
de los objetos introducidos.
o init(): Este método se usa para instanciar un constructor.
public void init(){
Allaica, Hidalgo , Tupiza 5
6. 2010
ESCUELA POLITECNICA NACIONAL
//CREACION DE UN PANEL GLOBAL
contentPane = (JPanel)this.getContentPane();
//CREACION DE LOS STATIC Y EDITS PARA EL PANEL1
jPanel1=new JPanel();
nom = new JLabel("Nombre:");
fono = new JLabel("Telefono:");
dir = new JLabel("Direccion:");
et1=new JLabel("Nombre:");
et2=new JLabel("Telefono:");
et3=new JLabel("Direccion:");
et4=new JLabel();
et5=new JLabel();
et6=new JLabel();
nom_t = new JTextField();
fono_t = new JTextField();
dir_t = new JTextField();
//CREACION DE BOTONES PARA EL PANEL2
jPanel2=new JPanel();
agregar = new JButton("Agregar");
agregar.addActionListener(this); // hace referencia al boton
borrar = new JButton("Borrar");
borrar.addActionListener(this);
mostrar = new JButton("Mostrar");
mostrar.addActionListener(this);
limpiar = new JButton("Nuevo");
limpiar.addActionListener(this);
Allaica, Hidalgo , Tupiza 6
7. 2010
ESCUELA POLITECNICA NACIONAL
//CREACION DE PANELES PARA LA DESCRIPCION
jPanel3=new JPanel();
jPanel4=new JPanel();
jPanel5=new JPanel();
jPanel6=new JPanel();
Box2 = new JComboBox();
//Colocacion de un evento para la escucha de algun suceso
//en este objeto
Box2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
Box2_actionPerformed(e);
}
});
BorderFactory: Este metodo permite la construccion de distintas vistas
para los paneles, es asi que tenemos los siguientes:
Allaica, Hidalgo , Tupiza 7
8. 2010
ESCUELA POLITECNICA NACIONAL
o Ejemplos:
createEmptyBorder(): Este metodo quita el borde de los
paneles
createRaisedBevelBorder(): Este metodo forma un relieve
sobre el panel.
//AGREGACION DE LOS OBJETOS A LOS PANELES
/**
* PANEL 1
*/
jPanel1.setLayout(null);
jPanel1.setBorder(BorderFactory.createEtchedBorder());
addComponent(jPanel1, nom, 7,24,60,18);
addComponent(jPanel1, fono, 7,45,60,18);
addComponent(jPanel1, dir, 7,66,60,18);
addComponent(jPanel1, nom_t, 67,15,424,22);
Allaica, Hidalgo , Tupiza 8
10. 2010
ESCUELA POLITECNICA NACIONAL
addComponent(jPanel5, et6, 67,65,202,18);
/**
* PANEL 6
*/
jPanel3.setLayout(null);
jPanel3.setBorder(BorderFactory.createEtchedBorder());
addComponent(jPanel3, Box2, 175,9,91,19);
/**
* AGREGACION AL APPLET
*/
contentPane.setLayout(null);
addComponent(contentPane, jPanel1, 15,24,512,100);
addComponent(contentPane, jPanel2, 17,140,104,171);
addComponent(contentPane, jPanel3, 128,275,396,37);
addComponent(contentPane, jPanel6, 129,141,399,128);
//MODIFICANDO EL TAMAÑO DE LA VENTANA
this.setLocation(new Point(0, 0));
this.setSize(new Dimension(556, 359));
}
Allaica, Hidalgo , Tupiza 10
11. 2010
ESCUELA POLITECNICA NACIONAL
private void Box2_actionPerformed(ActionEvent e){
String o = (String) Box2.getSelectedItem();
String cad=base.buscar(o);
String []val=cad.split("_");
et4.setText(val[0]);
et5.setText(val[1]);
et6.setText(val[2]);
}
Metodo que implemeta el metodo Container y Component.
o Container: Metodo que actua como un contenedor para objetos.
o Component: Metodo que permite la inserción de un objeto de
tipo(JButton, JTextField,…etc).
o setBounds(x,y,width,height): Accesorio que guarda las
posiciones y las dimensiones del objeto
// METODO PARA LA AGREGACION DE OBJETOS EN UNA
POSICION DETERMINADA
private void addComponent(Container container,Component c,int x,int
y,int width,int height)
{
c.setBounds(x,y,width,height);
container.add(c);
}
Metodo que captura todos los sucesos provocados por los botones
o ActionEvent: Metodo de la interface ActionListener de tipo event
para la captura de eventos.
public void actionPerformed(ActionEvent e) {
try{
manejador(e);
}catch(ExceptionInInitializerError e1){
Allaica, Hidalgo , Tupiza 11
12. 2010
ESCUELA POLITECNICA NACIONAL
System.out.println("Error");
}
}
Manejador(): Metodo que permite la manipulación de los eventos, de
acuerdo a las etiquetas de los botones.
private void manejador(ActionEvent e) {
String comand=e.getActionCommand();
if(comand.equals("Agregar")){
String a=nom_t.getText();
String b=fono_t.getText();
String c=dir_t.getText();
Persona body=new Persona(a,b,c);
base.addPersona(body);
}
else if(comand.equals("Borrar")){
}
else if(comand.equals("Mostrar")){
Box2.removeAllItems();
String cad=base.toString();
String []val=cad.split("_");
for(int i=0;i<val.length;i++){
Box2.addItem(val[i]);
}
}
Allaica, Hidalgo , Tupiza 12
13. 2010
ESCUELA POLITECNICA NACIONAL
else if(comand.equals("Nuevo")){
nom_t.setText("");
fono_t.setText("");
dir_t.setText("");
}
else{
}
}
}
VISTA PREVIA DEL RESULTADO DE LA UTILIZACION DE LOS METODOS.
Esto es todo para la ejecución de la Applet y funcional en todo sentido, ahora
hay que agregarle las funciones para que las ejecute.
Allaica, Hidalgo , Tupiza 13
14. 2010
ESCUELA POLITECNICA NACIONAL
CLASE BASE
ArrayList<?>: Esta clase permite la manipulación de datos de tipo
object
import java.util.ArrayList;
public class Base {
//Creacion de una base para almacenar datos de tipo persona
public ArrayList<Persona>persona;
/**
* Constructor para la inicializacion del array
*/
public Base(){
persona=new ArrayList<Persona>();
}
/**
* Metodo para la agregacion de una nueva persona al arreglo
* @param p
*/
public void addPersona(Persona p){
persona.add(p);
}
/**
* Metodo para la eliminacion de un contacto del arreglo
* @param index
*/
public void deleteContacto(int index){
persona.remove(index);
System.out.println("Delete Succesfull");
}
/**
* Metodo Sobreescrito para la estraccion de un arreglo en una linea de
texto,
* separado por un "_"
*
*/
public String toString(){
String ref="";
for(Persona p:persona){
ref=ref+p.getNom()+"_";
Allaica, Hidalgo , Tupiza 14
15. 2010
ESCUELA POLITECNICA NACIONAL
}
return ref;
}
/**
* Metodo para la búsqueda de una persona en el arreglo
* @param ref
* @return
*/
public String buscar(String ref){
String result="";
for(Persona p:persona){
if(ref.equals(p.getNom())){
result=result+p.getNom()+"_"+p.getTel()+"_"+p.getDir();
}
}
return result;
}
}
Allaica, Hidalgo , Tupiza 15
16. 2010
ESCUELA POLITECNICA NACIONAL
CLASE PERSONA
public class Persona {
//Creacion de variables de tipo String
private String nom;
private String dir;
private String tel;
/**
* Constructor para la inicializacion de las variables
* @param nom
* @param tel
* @param dir
*/
public Persona(String nom,String tel,String dir){
this.dir=dir;
this.nom=nom;
this.tel=tel;
}
/**
* Metodo que retorna el nombre de la persona
* @return
*/
public String getNom() {
return nom;
}
/**
* Metodo que inserta un nombre de una la persona
* @param nom
*/
public void setNom(String nom) {
this.nom = nom;
}
/**
* Metodo para obtener la direccion
* @return
*/
public String getDir() {
return dir;
}
/**
* Metodo para asignar una direccion
* @param dir
*/
public void setDir(String dir) {
this.dir = dir;
}
Allaica, Hidalgo , Tupiza 16
17. 2010
ESCUELA POLITECNICA NACIONAL
/**
* Metodo para obtener el telefono
* @return
*/
public String getTel() {
return tel;
}
/**
* Metodo para asignar una telefono
* @param tel
*/
public void setTel(String tel) {
this.tel = tel;
}
}
UML DEL PROYECTO
AgendaPRO Base
~base: Base = new Base() +ArrayList<?>: Persona
-nom: JLabel +Attribute2
-fono: JLabel
-dir: JLabel +addPersona(p: Persona): void
-et1: JLabel +deleteContacto(index: int): void
-et2: JLabel +toString(): String
-et3: JLabel +buscar(ref: String): String
-et4: JLabel
-et5: JLabel
-et6: JLabel
-agregar: JButton
-borrar: JButton
-mostrar: JButton
-limpiar: JButton
-contentPane: JPanel
-jPanel1: JPanel
-jPanel2: JPanel Persona
-jPanel3: JPanel
-nom: String
-jPanel4: JPanel
-dir: String
-jPanel5: JPanel
-tel: String
-jPanel6: JPanel
-nom_t: JTextField <<create>>+Persona(nom: String, tel: String, dir: String)
-fono_t: JTextField +getNom(): String
-dir_t: JTextField +setNom(nom: String)
-Box2: JComboBox +getDir(): String
~index: int = 0 +setDir(dir: String)
+getTel(): String
+init()
+setTel(tel: String)
-Box2_actionPerformed(e: ActionEvent)
+imprimePersona()
-addComponent(container: Container, c: Component, x: int, y: int, width: int, height: int)
+actionPerformed(e: ActionEvent)
-manejador(e: ActionEvent)
Allaica, Hidalgo , Tupiza 17
18. 2010
ESCUELA POLITECNICA NACIONAL
Conclusiones:
Los Applets son muy utilizado hoy en día para la estructuración de
software educativo, que ayude a los mas pequeños a divertirse
aprendiendo y jugando.
La compañía SUN MICROSYTEM ha desarrollado gran cantidad de
software libre para el desarrollo de aplicaciones java, entre las
principales ha sido su evolución en el ámbito de las redes e Internet, las
applets son la base para la evolución de la tecnología y disminución de
la piratería, gracias a sus métodos envolventes que dificultan el robo de
información.
Allaica, Hidalgo , Tupiza 18