Archivo

Posts Tagged ‘POO’

Java Persistence: Crea Aplicaciones Rapidamente [Netbeans+Java+Mysql+TopLink]

Supongamos que tenemos una base de datos y de las tablas de esa base de datos queremos armar una aplicación.
Las Tablas son 2:

  • pais
  • ciudad
CREATE TABLE pais (
	p_id VARCHAR(3) NOT NULL,
	p_nombre VARCHAR(25),
	PRIMARY KEY (p_id)
);
CREATE TABLE ciudad (
	c_id VARCHAR(2) NOT NULL,
	c_nombre VARCHAR(25),
	p_id VARCHAR(3) ,
	c_habitantes INT,
	PRIMARY KEY (c_id) ,
	FOREIGN KEY(p_id) REFERENCES pais(p_id)
);

Esas tablas contienen los siguientes registros:

INSERT INTO pais VALUES('001','Chile');
INSERT INTO pais VALUES('002','Venezuela');
INSERT INTO pais VALUES('003','EEUU');
INSERT INTO pais VALUES('004','Francia');

INSERT INTO ciudad VALUES('01','Concepcion','001',222232);
INSERT INTO ciudad VALUES('02','La serena','001',234445);
INSERT INTO ciudad VALUES('03','Valparaiso','001',123434);
INSERT INTO ciudad VALUES('04','Maracaibo','002',89212);
INSERT INTO ciudad VALUES('05','Caracas','002',233456);
INSERT INTO ciudad VALUES('06','Nueva York','003',445212);
INSERT INTO ciudad VALUES('07','Washington','003',235211);
INSERT INTO ciudad VALUES('08','Paris','004',232452);
INSERT INTO ciudad VALUES('09','San Huano','003',445212);

Para crear una aplicación en Java deberiamos comunmente armar un sistema en 3 capas y crear clases para conexión, manipulacion de datos, etc… como lo hacia en este post: https://estebanfuentealba.wordpress.com/2009/03/12/mysql-java-netbeans-conectar-a-una-base-de-datos-con-java/

Bueno en este post mostraré como crear una aplicacion en simples pasos sin necesidad de mucho programar con Java Persistence.

1.- Creamos un proyecto Java Aplication

2.- Le Asignamos un Nombre a nuestro proyecto y Finalizamos

3.- Ahora agregaremos a nuestro proyecto una conexión a nuestra base de datos, Para eso vamos a la pestaña Services, damos click derecho a Databases y presionamos New Connection…

4.- Ahora Configuramos; Seleccionamos el driver de MYSQL y completamos con los datos de la base de dato yFinalizamos.

5.- Ahora vamos a la pestaña Proyects, click derecho en Libraries y Add Library...

Agregaremos el Driver de MySQL y TopLink


Ahora ya podemos empezar a trabajar. Ahora agregaremos clases a nuestro proyecto. TopLink puede mapear la base de datos y transformar bd relacional a programación objetual. Para eso agregamos a nuestro proyecto una clase mapeada de la base de datos llamada Entity Clases From Data Base…

Nos pedirá la conexión y según ésta nos mostrará las tablas. Agregamos las tablas que deseamos ocupar en nuestro Proyecto y damos a Next.

Las tablas se mapearán y se convertirán en Clases , ahora nos pedirá el nombre que tendrán esas Clases mapeadas… Luego configuramos Persistence Unit… (Necesario para percistence)

Seleccionamos TopLink como Persistence Library y precionamos Create

Por Último presionamos Finish

Si todo sale Bien se habrán creado las clases que fueron mapeadas desde la base de datos

Ahora podemos empezar a programar :P , en este mini tutorial crearé el siguiente programa.

Un combobox con todos los países de la base de datos, al seleccionar algún país mostrará todas las ciudades asociadas a ese país.

Agregamos a nuestro proyecto un JFrame Form y agregamos JComboBox,JList y los JLabel’s correspondientes.

Agregamos los siguientes Atributos al JFrame Form:

    private EntityManagerFactory emf;
    private EntityManager em;

Ahora en el constructor del JFrame Form agregamos las siguientes lineas

    public NewJFrame() {
        initComponents();
        //inicializamos el EntityManagerFactory
        emf = Persistence.createEntityManagerFactory("TestPU");
        //inicializamos entity manager
        em = emf.createEntityManager();
        //Agregamos un Model al JList
        jList1.setModel(new DefaultListModel());
        //Posicionamos la ventana en el centro
        this.setLocationRelativeTo(null);
        //Llamamos al metodo que llena el combobox con paises
        loadComboBox();
    }

Ahora creamos el método loadComboBox que carga los países al combobox.

    public void loadComboBox() {
        //Creamos una Query
        //"Pais.findAll" es una query que fue definida automaticamente gracias al mapeo de la db
        //Luego obtenemos los resultados y los recorremos
        Iterator it = em.createNamedQuery("Pais.findAll").getResultList().iterator();
        while(it.hasNext()) {
            //Agrego el resultado al Combobox
            this.jComboBox1.addItem(((Pais)it.next()));
        }
    }

Ahora agregamos un evento al JCombobox para que al seleccionar cualquier Item llene el JList con las ciudades del País Seleccionado. El evento que usaremos es itemStateChanged

    private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
        if(evt.getStateChange() == 1) {
            //Creamos una Query con una consulta ya definida ""Ciudad.findByPId"
            Query query = em.createNamedQuery("Ciudad.findByPId");
            //Esa query requiere pasarle un valor "pId" , la id del Pais
            query.setParameter("pId", ((Pais)this.jComboBox1.getSelectedItem()).getPId());
            //Elimino todos los elementos agregados al Modelo del JList
            ((DefaultListModel)jList1.getModel()).removeAllElements();
            //Recorro los resultados de la Query
            Iterator it = query.getResultList().iterator();
            while(it.hasNext()) {
                //Agrego el resultado a la JList
                ((DefaultListModel)jList1.getModel()).addElement(((Ciudad)it.next()));
            }
        }
    }

Ahora cambiamos los metodos toString() de Ciudad y Pais para que muestre los nombres de Ciudad y Pais respectivamente.

Con eso ya tenemos una aplicación funcional, sin tocar SQL ya podemos manipular los datos de nuestra base de datos.

Con esto también podemos Agregar datos a la base de datos con solo crear objetos de las Entity Class y hacer otro tipo de consultas.

Espero que sirva de algo este mini tutorial, ahora pueden investigar mas sobre Java Persistence.

Codigo de Fuente: Test.Persistence.EstebanFuentealba.rar

Saludos

Categorías:Java Etiquetas: , , , , , ,

Mp3Spider (Java) ScreenShot

Hoy estuve dando un POOco de jugo (programando) y este es el resultado de lo que llevo hasta el momento:

screenshot  del Proyecto Mp3Spider 2010 Open Source (Java)

Hasta el Momento:

  • Creado motor de Búsqueda / Descarga
  • Creado servidor (proxy)
  • Creado Mp3 Player
  • Busca y reproduce mp3s
  • Muestra Discografías de Artista
  • Interfaz gráfica (penca)

Bugs o Mejorar:

  • Mejorar Servidor Web (Proxy)
  • Crear hilos en la búsqueda de discografías y demás
  • Interfaz Gráfica
  • Filtro (funcionaba y no se que movi xD)
  • Obtener la duración (tiempo) exacta del mp3
  • optimizar todo
  • manejar de mejor forma los hilos
  • Paginar los resultados
  • ScrollerText xD

Se viene:

  • Busqueda de Artistas Similares
  • Busqueda de Tracks Similares
  • Busqueda de (Información || Biografía) Artista
  • Sistema de Usuarios (PHP)
  • Crear Base de datos (Artista,Track,Disco,Usuario,PlayList,etc) (para guardar la información)
  • Reproducción de FLV (para poder reproducir videos musicales de Youtube)
  • ¿ Agregar Descarga de Archivos ?
  • Agregar Motores de Busqueda
  • Mejorar la Interfaz Gráfica
  • Crear PlayLists Locales (pls,aux,mua) y Web (xml,pls,aux,xspf)
  • AutoUpdater

Link del Proyecto: http://kenai.com/projects/mp3spider/

Registrate en kenai y únete

Dudas, Sugerencias e Ideas  Acá.

Saludos!

Java Recorrer Colecciones [ Map ] usando for/while Parte 2

noviembre 29, 2009 3 comentarios

En el Post Anterior Mostre tres formas de recorrer una Collection ahora dejo como recorrer un Map.

En si un Map tiene una Clave y un Valor, por eso es un poco mas complicado recorrerlo

Iterator

Primero Mostrare como recorrer con Iterator

Iterator it = mapList.entrySet().iterator();
    	while(it.hasNext()) {
    		Map.Entry ent = (Map.Entry)it.next();
    		Persona p = (Persona)ent.getValue();
    		System.out.println(p);
    	}

Lo diferente esta en el Map.Entry , esto me permitirá acceder a la key y al value. (Recordemos que el value es el objeto completo).

Simple For

En si, Map no tiene un indice numérico por defecto, como si lo tienen los List, es por eso que para recorrer un Map usando for NO se podrá decir “quiero el objeto en la posición x” pero hay una forma de poder hacerlo, esta forma es convertir el map en array (arreglo) , Esto lo muestro a continuación

for(int i=0; i<mapList.size(); i++) {
    System.out.println(mapList.values().toArray()[i]);
}

Del Map tome todos los valores con el metodo values() esto em devuelve un Set, como no tiene un indice lo convierto a Array y de ese array saco el objeto en la posición “i”

 

Foreach

:

Por ultimo dejo el foreach

for(Persona p : mapList.values()) {
    System.out.println(p);
}

La forma mas sencilla de recorrer un Map…

Acá les dejo el codigo con las tres formas de Recorrer

/**
 * @(#)Persona.java
 *
 *
 * @author Esteban Fuentealba
 * @version 1.00 2009/11/29
 */

import java.util.*;

public class Persona {
	private String rut;
	private String nombre;

	public Persona() {}
    public Persona(String rut,String nombre) {
    	this.rut 	= rut;
    	this.nombre = nombre;
    }
    public void setRut(String val) {
    	this.rut = val;
    }
    public void setNombre(String val) {
    	this.nombre = val;
    }
    public String getRut() {
    	return this.rut;
    }
    public String getNombre() {
    	return this.nombre;
    }

    public String toString() {
    	return "[Rut: "+this.getRut()+"] [Nombre: "+this.getNombre()+"]";
    }
    public static void main(String[] args) {

    	Map<String,Persona> mapList = new HashMap<String,Persona>();
    		Persona pA = new Persona("111-1","Juan");
    		Persona pB = new Persona("222-2","Pedro");
    		Persona pC = new Persona("333-3","Luis");
    	mapList.put(pA.getRut(),pA);
    	mapList.put(pB.getRut(),pB);
    	mapList.put(pC.getRut(),pC);

    	System.out.println("Recorrer Map con Iterator:");
    	Iterator it = mapList.entrySet().iterator();
    	while(it.hasNext()) {
    		Map.Entry ent = (Map.Entry)it.next();
    		Persona p = (Persona)ent.getValue();
    		System.out.println(p);
    	}
    	System.out.println("Recorrer Map con simple for:");
    	for(int i=0; i<mapList.size(); i++) {
    		System.out.println(mapList.values().toArray()[i]);
    	}

    	System.out.println("Recorrer Map con foreach:");
    	for(Persona p : mapList.values()) {
    		System.out.println(p);
    	}

    }
}

Espero que les sirva,

Saludos!

Categorías:Java Etiquetas: , , , , , , , ,

Java Recorrer Colecciones [ Collection ] usando for/while Parte 1

noviembre 29, 2009 10 comentarios

Bueno aquí pondré algunas formas de recorrer Colecciones, Primero partiré por Las clases que Implementan Collection, son las mas fáciles de recorrer.

Para recorrer ArrayList,Vector,HashSet,TreeSet y todos los List y Set podemos usar lo siguiente:

Primero Crearé una clase y un metodo main que tendrá un ArrayList para poder recorrerlo y mostrar por pantalla lo que tiene dicho ArrayList

/**
 * @(#)Persona.java
 *
 *
 * @author Esteban Fuentealba
 * @version 1.00 2009/11/29
 */

import java.util.ArrayList;
public class Persona {
	private String rut;
	private String nombre;

	public Persona() {}
    public Persona(String rut,String nombre) {
    	this.rut 	= rut;
    	this.nombre = nombre;
    }

    public String getRut() {
    	return this.rut;
    }
    public String getNombre() {
    	return this.nombre;
    }

    public static void main(String[] args) {
    	ArrayList<Persona> lista = new ArrayList<Persona>();
    	lista.add(new Persona("111-1","Juan"));
    	lista.add(new Persona("222-2","Pedro"));
    	lista.add(new Persona("333-3","Luis"));

    }

}

Bien , es un ArrayList Genérico de Persona. Ahora veamos la primera forma de recorrer, es parecida cuando recorremos arrays

Simple For:

for(int i=0; i< lista.size(); i++) {
    		System.out.println(lista.get(i));
    	}

Es un for , le damos un contador de donde empezará (Desde la posición 0 de la lista), la condición (que se mantenga el ciclo siempre que nuestro contador sea menor al largo de la lista) y que debe hacer cuando cumpla un ciclo (aumentar el contador para ir a la siguiente posición).
Esto nos debe mostrar por pantalla lo siguiente:

Persona@3e25a5
Persona@19821f
Persona@addbf1

¿ Por que ? Yo quería que mostrara los datos de la persona =(
Mostró eso porque el programa recorre el arraylist, saca un objeto de la posición que este recorriendo, he imprime el objeto, el objeto es de la Clase Persona por lo que el programa va a ir a esa clase y buscará si esta el método toString() y como no lo encuentra imprimirá el toString() del padre, en este caso el de Object (Todo hereda de Object) que me devuelve El nombre de la Clase “Persona” @ “hashCode”.
Para solucionar esto le pondré el método (sobrescrito) toString() a la clase Persona, quedará así:

/**
 * @(#)Persona.java
 *
 *
 * @author
 * @version 1.00 2009/11/29
 */

import java.util.ArrayList;
public class Persona {
	private String rut;
	private String nombre;

	public Persona() {}
    public Persona(String rut,String nombre) {
    	this.rut 	= rut;
    	this.nombre = nombre;
    }

    public String getRut() {
    	return this.rut;
    }
    public String getNombre() {
    	return this.nombre;
    }

    public String toString() {
    	return "[Rut: "+this.getRut()+"] [Nombre: "+this.getNombre()+"]";
    }
    public static void main(String[] args) {
    	ArrayList<Persona> lista = new ArrayList<Persona>();
    	lista.add(new Persona("111-1","Juan"));
    	lista.add(new Persona("222-2","Pedro"));
    	lista.add(new Persona("333-3","Luis"));

    	for(int i=0; i< lista.size(); i++) {
    		System.out.println(lista.get(i));
    	}
    }
}

Compilo y corro el programa, la salida muestra por pantalla lo siguiente:

[Rut: 111-1] [Nombre: Juan]
[Rut: 222-2] [Nombre: Pedro]
[Rut: 333-3] [Nombre: Luis]

Bien Ahora si mostró lo que queríamos que mostrara.

Iterator:

Otra forma de recorrer el arraylist es usando el metodo iterator() del ArrayList , para entender de mejor forma como funciona iterator() dejo la siguiente imagen:

Lo que esta en verde es nuestra lista. Ojo Iterator no tiene índice, pero la mejor forma de entenderlo es imaginandose el indice, es por eso que puse en la imagen.
Lo que hace iterator() es:

  1. Poner el iterador al principio de la lista. (Imaginariamente en la posición -1, fuera de la lista)
  2. Luego con el metodo hasNext() pregunta si hay un elemento siguiente.
  3. Si hay un elemento debo sacarlo con el metodo next() y vuelvo a preguntar con el hashNext(), así hasta que no exista ningún elemento siguiente.

Lo anterior llevado a código quedaría de la siguiente forma:

Iterator it = lista.iterator();
    	while(it.hasNext()) {
    		System.out.println(it.next());
    	}

la salida por pantalla es la siguiente:

[Rut: 111-1] [Nombre: Juan]
[Rut: 222-2] [Nombre: Pedro]
[Rut: 333-3] [Nombre: Luis]

Cumple la misma función que la primera forma de recorrer.

 

Foreach:

La siguiente forma de recorrer es con foreach, desde Java 5 que se incluyó el bucle foreach para iterar sobre colecciones de objetos.
La forma de ocuparlo es la siguiente

for(Clase nombre : lista) {
	//...
}

Donde “lista” es la collection a recorrer,”Clase” es de que clase es la “lista” y “nombre” es un nombre de variable.
Acá llevado al ejemplo de Persona:

for(Persona p : lista) {
    		System.out.println(p);
    	}

La salida por pantalla es:

[Rut: 111-1] [Nombre: Juan]
[Rut: 222-2] [Nombre: Pedro]
[Rut: 333-3] [Nombre: Luis]

Según yo ,foreach, es la forma mas fácil de recorrer colecciones.

 

Bueno ahí puse tres formas de recorrer una Collection (Set,List,Queue)

Espero que les sirva, en el siguiente post pondré como recorrer Map
Acá les dejo el código con las tres formas,

/**
 * @(#)Persona.java
 *
 *
 * @author
 * @version 1.00 2009/11/29
 */

import java.util.ArrayList;
import java.util.Iterator;
public class Persona {
	private String rut;
	private String nombre;

	public Persona() {}
    public Persona(String rut,String nombre) {
    	this.rut 	= rut;
    	this.nombre = nombre;
    }

    public String getRut() {
    	return this.rut;
    }
    public String getNombre() {
    	return this.nombre;
    }

    public String toString() {
    	return "[Rut: "+this.getRut()+"] [Nombre: "+this.getNombre()+"]";
    }
    public static void main(String[] args) {
    	ArrayList<Persona> lista = new ArrayList<Persona>();
    	lista.add(new Persona("111-1","Juan"));
    	lista.add(new Persona("222-2","Pedro"));
    	lista.add(new Persona("333-3","Luis"));

    	System.out.println("Recorrer Collection con simple for:");
    	for(int i=0; i< lista.size(); i++) {
    		System.out.println(lista.get(i));
    	}
    	System.out.println("Recorrer Collection con Iterator:");
    	Iterator it = lista.iterator();
    	while(it.hasNext()) {
    		System.out.println(it.next());
    	}
    	System.out.println("Recorrer Collection con foreach:");
    	for(Persona p : lista) {
    		System.out.println(p);
    	}
    }
}

Saludos!

Categorías:Java Etiquetas: , , , , , , , ,

Preparando Certamen 3 – Ejercicio 2 [POO – Java] PEF2501

noviembre 28, 2009 1 comentario

Otro Ejercicio de Java para practicar para el cetamen 3 de Programación Orientada a Objetos, Solo Tienen que hacer lo que les piden, Si no piden main y no piden testear la aplicación no lo hagan (Si les sobra tiempo pueden hacerlo).
Enunciado:
Una biblioteca requiere de una aplicación que sea capaz de llevar un registro de los alumnos de las carreras y los pedidos de libros

que ellos realizan. Para cubrir este requerimiento se ha creado
un conjunto de clases, cuya especificación es la siguiente:
CARRERA
ATRIBUTOS
nombre: String
duración: byte
acreditada: boolean
registroAlumnos: HashMap (considerar el RUT del
alumno como clave primaria (key))

MÉTODOS
Constructor sin parámetros
Constructor con parámetros (que reciba todos los atributos, obviando los alumnos, que deben ser ingresados posteriormente)
Accesador para cada atributo
Mutador para cada atributo
Método de impresión
Método addAlumno (que reciba un objeto del tipo Alumno ya inicializado y que valide la unicidad de registros mediante un mensaje en caso de que el alumno a ingresar ya se encuentre registrado).
ALUMNO
ATRIBUTOS:
RUT: String (máximo 10, los primeros 8 son números, luego el “-” y finalmente un número o una letra)
tipo: int (considerar uso de las siguientes constantes
Alumno.ADJUNTO:1,Alumno.REGULAR:2, Alumno.RETIRADO:3)
ciudad: String
prestamos: ArrayList
MÉTODOS:
Constructor sin parámetros
Constructor con parámetros (obviando los préstamos, que deben ser generados posteriormente)
Accesador para cada atributo
Mutador para cada atributo
Método de impresión
Método addPrestamo, que reciba como parámetro un objeto del tipo Préstamo ya inicializado.
Método booleano isResponsable, que devuelve true si los tres últimos préstamos han sido devueltos en la fecha que corresponde, false en su defecto, o si no existen préstamos registrados.
PRÉSTAMO
ATRIBUTOS:
fechaPréstamo: date
fechaDevolución: date (no puede ser inferior a la fecha de
préstamo).
libro: String
atrasado: boolean
MÉTODOS:
Constructor sin parámetros
Constructor con parámetros (que reciba todos los atributos, siendo atrasado: false)
Accesador para cada atributo
Mutador para cada atributo, excepto para el caso del atributo atrasado.
Método de impresión
Método devolverLibro() que recibe la fecha efectiva de la devolución y si es mayor a la fecha en la que debía ser devuelto el libro entonces deja el atributo atrasado seteado en true.
Todas las reglas de negocio deben controlarse con
Excepciones.(Considerar lanzar objetos Exception para el tipo
numérico y para el tipo String por separado, explicando en el
mensaje la regla de negocio no cumplida).

Descarga Código de fuente:
http://estebanfuentealba.net/ayudantia/PreparandoCertamen3EjercicioDos.rar

PD: Si quieren Testear El programa aqui les dejo un Main

/**
 * @(#)EjercicioDos.java
 *
 * EjercicioDos application
 *
 * @author Esteban Fuentealba
 * @version 1.00 2009/11/28
 */
import cl.duoc.pef.ejerciciodos.entidades.*;
import cl.duoc.pef.ejerciciodos.exception.*;
import java.util.*;
public class EjercicioDos {
    
    public static void main(String[] args) {
    	try {
	    	Carrera c = new Carrera("Informatica",(byte)4,true);
	    	
	    	Alumno alumnoA = new Alumno("11111111-1",Alumno.REGULAR,"Concepcion");
	    		Prestamo prestamoA = new Prestamo(new Date(2009,6,20),new Date(2009,6,25),"POO Avanzada");
	    		Prestamo prestamoB = new Prestamo(new Date(2009,7,20),new Date(2009,8,25),"Programacion para Principiantes");
	    		Prestamo prestamoC = new Prestamo(new Date(2009,9,20),new Date(2009,9,25),"Como  salir de la Depresión");
	    	alumnoA.addPrestamo(prestamoA);
	    	alumnoA.addPrestamo(prestamoB);
	    	alumnoA.addPrestamo(prestamoC);
	    	
	    	Alumno alumnoB = new Alumno("22222222-2",Alumno.ADJUNTO,"Concepcion");
	    		Prestamo prestamoD = new Prestamo(new Date(2009,7,20),new Date(2009,11,25),"Revista caras");
	    	alumnoB.addPrestamo(prestamoD);
	    	Alumno alumnoC = new Alumno("33333333-3",Alumno.REGULAR,"Concepcion");
	    	Alumno alumnoD = new Alumno("44444444-4",Alumno.RETIRADO,"Santiago");
	    	
	    	c.addAlumno(alumnoA);
	    	c.addAlumno(alumnoB);
	    	c.addAlumno(alumnoC);
	    	c.addAlumno(alumnoD);
	    	
	    	c.imprimir();
	    	prestamoB.devolverLibro(new Date(2010,0,0));
	    	System.out.println("Responsable: "+alumnoA.isResponsable());
    	} catch(NumberException exA) {
    		System.out.println(exA.getMessage());
    	} catch(StringException exB) {
    		System.out.println(exB.getMessage());
    	} catch(Exception exC) {
    		System.out.println(exC.getMessage());
    	}
   	}
}

Saludos!

Preparando Certamen 3 – Ejercicio 1 [POO – Java] PEF2501

noviembre 28, 2009 1 comentario

Aquí un ejercicio para practicar para su certamen del día lunes, la profesora Yasna se los envió por blackboard a sus cuentas según me informan por interno xD.

 

 

 

Enunciado:
Se desea manejar los antecedentes de un curso. Cada curso cuenta
con un nombre y con una nómina de alumnos. Por su parte, cada
alumno cuenta con un ID, un nombre y un promedio final.

Algunos de los métodos asociados al curso son los que se indican a
continuación:

MÉTODO DESCRIPCIÓN
public void matricular(Alumno a) Permite AGREGAR al alumno ‘a’
al curso.
public boolean remover(Alumno a) Permite REMOVER al alumno ‘a’
del curso.
public boolean estaInscrito(Alumno a) Permite saber si el alumno ‘a’
se encuentra presente en el
curso

En el curso no se pueden tener alumnos repetidos, es decir, NO
SERÍA POSIBLE tratar de matricular a un mismo alumno dos veces.

Se pide implementar las clases que permitan almacenar los datos de
un curso y sus alumnos.

Se pide implementar la clase Main que contenga el método main que
permita cumplir con la siguiente funcionalidad:

· Crear a tres alumnos con los siguientes datos:
o ID = 1; NOMBRE = “ALFA”; PROMEDIO = 6.5
o ID = 2; NOMBRE = “BETA”; PROMEDIO = 4.5
o ID = 3; NOMBRE = “GAMMA”; PROMEDIO = 5.5
· Crear el curso llamado PEF2501
· Imprimir la nómina de alumnos del curso
· Matricular a ALFA y BETA en el curso PEF2501

· Imprimir en la salida estándar, utilizando el método
estaInscrito(), si el alumno llamado BETA se encuentra
inscrito en el curso.
· Imprimir en la salida estándar, utilizando el método
estaInscrito(), si el alumno llamado GAMMA se encuentra
inscrito en el curso.
· Remover del curso al alumno llamado BETA
· Imprimir la nómina del curso

Descarga Codigo de Fuente:
http://estebanfuentealba.net/ayudantia/PreparandoCertamen3EjercicioUno.rar

Saludos!

Java, Creando JTable con swing

noviembre 12, 2009 6 comentarios

Bueno aqui pondré una forma sencilla de crear nuestra primera tabla con java.
La siguiente imagen nos muestra como esta compuesta una tabla
tabla

Como muestra la imagen la tabla se compone de:

  • Columas (Verticales)
  • Filas (Horizontales)

A la vez, las filas se componen de Celdas dependiendo de la fila y columna.

La tabla de la imagen tiene 3 Columnas

  • Columna A
  • Columna B
  • Columna C

1 Fila con 3 Celdas

  • X
  • Y
  • Z

En Java existe un componente que nos permitirá dibujar éste tipo de tablas y su nombre es JTable

JTable tiene el constructor sobrecargado y uno de ellos me pide dos parametros:
JTable(Vector rowData, Vector columnNames)

Un Vector de Filas y un Vector de Columnas

Tip: Vector es una clase que implementa la interface List, ArrayList tambien implementa la interface List, por lo que la forma de uso de Vector y ArrayList es igual.

Teniendo el conocimiento de lo anterior ahora lo pasaremos a codigo.

/**
 * @(#)Tabla.java
 *
 * Tabla application
 *
 * @author EstebanFuentealba
 * @version 1.00 2009/11/11
 */
 
/* Importo lo necesario para poder dibujar ventanas */
import java.awt.*;
import javax.swing.*;
/* Importo la Clase Vector que se encuentra en el package java.util */
import java.util.Vector;

/* mi clase Tabla hereda de JFrame */
public class Tabla extends JFrame {
    
    public Tabla() {
    	/* Le setearé el titulo a la ventana */
    	super("Mi tabla");
    	/* a la ventana le doy dimensiones de 300 de ancho x 200 de alto */
    	this.setSize(300,200);
    	
    	/* Creo una instancia de la clase Vector llamada 'columnas' */
    	Vector columnas = new Vector();
    	/* 
    	 	A ese vector le agrego datos, estos datos vendrán a ser las
    	 	columnas de la tabla.
    	*/
    	columnas.add("Columna A");
    	columnas.add("Columna B");
    	columnas.add("Columna C");

    	
    	/* 
    	 	Creo una instancia de la clase Vector llamada 'filas' , este vector
    	 	tendrá todas las filas de la tabla.
    	*/
    	Vector filas = new Vector();
    	
    	/*
    	 	Creo otro objeto de la clase Vector llamado 'fila', esto representará a
    	 	una fila en particular y cada elemento que agregue a este vector
    	 	será una celda.
    	 */
    	Vector fila = new Vector();
    	
    	fila.add("X");
    	fila.add("Y");
    	fila.add("Z");
  
		/* Agrego la fila al vector que contiene todas las filas */
    	filas.add(fila);
    	
    	/* 
    	 	Creo una instancia de JTable y le paso como parametro los dos Vectores:
    	 		-filas
    	 		-columnas	
    	 */
    	JTable tbl = new JTable(filas,columnas);
    	/* Creo una instancia de JScrollPane y le paso como parametro la tabla */
    	JScrollPane panel =new JScrollPane(tbl);
		/* Por ultimo agrego ese objeto de JScrollPane al contenedor de la ventana */
    	this.getContentPane().add(panel);
    	
    	this.setVisible(true);
    }
    public static void main(String[] args) {
    	new Tabla();
    }
}

Con eso ya tienen una tabla funcionando =)

Saludos!

Categorías:Java Etiquetas: , , , , , ,