Vous êtes sur la page 1sur 14

COMO AGREGAR DATOS Y

MOSTRARLOS EN UN JLIST [JAVA]


Buenas tardes a todos, en esta entrada dejare un poco lo que es OpenGL y hare un
post sencillo para Java. Lo que haremos es trabajar con un JList, guardaremos
nuestros propios objetos en el y desplegaremos la informacion que contienen en
diferentes labels, es algo sencillo pero muy util. No trabajare con bases de datos pero
de igual manera se haria.

Para comenzar crearemos un nuevo proyecto en NetBeans sin mainclass

Y despues de esto crearemos un packete con nombre cual quiera y crearemos un


JFrame, y lo diseñaremos de la siguiente manera

Para comenzar con todo esto, despues de que ya tengamos nuestro diseño anterior,
lo que haremos es crear una clase que se llame Usuario, esta clase tendra las
propiedades que despliega el form anterior. Primero haremos esto:
Creamos la clase y declaramos esas variables ( por cierto falto el ID, lo agregan
como int), despues damos clic derecho ( este es un buen tip jaja), y en insertar
codigo damos clic y aparecera esta lista desplegable, y tenemos varias opciones para
que netbeans nos agregue codigo, primero le vamos a poner que nos agregue un
constructor y seleccionamos todas las propiedades, despues damos clic en getter and
setter y seleccionamos todas las propiedades

Como lo hicimos en el post de como llena un JComboBox, tenemos que


sobreescribir un metodo llamado toString, para que nos muestre lo que nosotros
desiemos al momento de agregar un objeto al JList
La clase quedara de la siguiente manera:
1 public class Usuario {
2
3 private String nombre, apellido, direccion, telefono, email;
4 private int id;
5
public Usuario(String nombre, String apellido, String direccion,
6 String telefono, String email) {
7 this.nombre = nombre;
8 this.apellido = apellido;
9 this.direccion = direccion;
this.telefono = telefono;
10 this.email = email;
11 }
12
13 public int getId() {
14 return id;
15 }
16
public void setId(int id) {
17 this.id = id;
18 }
19
20 public String getApellido() {
21 return apellido;
}
22
23 public void setApellido(String apellido) {
24 this.apellido = apellido;
25 }
26
27 public String getDireccion() {
28 return direccion;
}
29
30 public void setDireccion(String direccion) {
31 this.direccion = direccion;
32 }
33
34 public String getEmail() {
35 return email;
}
36
37 public void setEmail(String email) {
38 this.email = email;
39 }
40
41 public String getNombre() {
return nombre;
42 }
43
44 public void setNombre(String nombre) {
45 this.nombre = nombre;
46 }
47
48 public String getTelefono() {
return telefono;
49
50 }
51
52 public void setTelefono(String telefono) {
this.telefono = telefono;
53 }
54 @Override
55 public String toString() {
56 return nombre+" "+apellido;
}
57}
58
59
60
61
62
63
64
65

Ahora tendremos que crear un modelo para nuestra lista, para eso tenemos uno por
default llamado DefaultListModel, declaramos y creamos un objeto de tipo
DefaultListModel en la clase de nuestro frame:

1 /** Creates new form MainWindow */


2 DefaultListModel modeloLista = new DefaultListModel();
3 public MainWindow() {
4 initComponents();
5 jList1.setModel(modeloLista);
}
6

Creamos el modelo y se lo asignamos a nuestra lista. Ahora viene lo mas sencillo del
mundo!, en el boton que agregamos en el form damos doble clic y en el evento
simplemente agarramos los datos y creamos un objeto de la clase usuario dandole
los parametros en el constructor (importante y para buena practica de programacion,
no dejemos los nombres por default, a cada textfield le cambiamos el nombre como
ud deseen para poder identificarlo, por ejemplo
txfNombre,txfApellido,texfDireccion etc), despues de crear nuestro objeto, lo
agregamos a nuestra lista:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {


1 // TODO add your handling code here:
2 String nombre, apellido, direccion, telefono, email;
3 int id;
4 nombre = txfNom.getText();
apellido = txfApe.getText();
5 direccion = txfDir.getText();
6 telefono = txfTel.getText();
7 email = txfMail.getText();
8 id = Integer.parseInt(txfId.getText());
9
Usuario objUsuario = new Usuario(id, nombre, apellido, direccion, tel
10 modeloLista.addElement(objUsuario);
11 }
12
13
14
Y asi se iran almacenando los objetos usuario a nuestra lista,

Ahora solo falta desplegar la informacion al seleccionar un elemento en la lista, para


eso haremos uso del evento del jList llamado valueChanged y escribiremos lo
siguiente

1 private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {


2 // TODO add your handling code here:
3 int index= jList1.getSelectedIndex();
4 Usuario objUsuario=(Usuario)modeloLista.getElementAt(index);
5
lblId.setText("ID: "+objUsuario.getId());
6 lblNom.setText("Nombre: "+objUsuario.getNombre());
7 lblApe.setText("Apellido: "+objUsuario.getApellido());
8 lblDir.setText("Direccion: "+objUsuario.getDireccion());
9 lblTel.setText("Telefono: "+objUsuario.getTelefono());
10 lblMail.setText("Email: "+objUsuario.getEmail());
11
}
12
13
Y al seleccionar cada elemento que este en la lista nos desplegara la informacion en
los labels que habiamos agregado

Esto para mi ha sido util al momento de desarrollar diferentes aplicaciones en el


tecnologico!, espero les sea de ayuda!
Un ejemplo sencillo con Scanner
En la siguiente imagen puedes ver el código de una sencilla aplicación Java que
realiza una serie de preguntas indiscretas al usuario, ( nombre, edad, dirección ),
almacena las respuestas en variables y finalmente las imprime en pantalla.

1. En primer lugar escribimos el código import java.util.Scanner; para poder utilizar la clase
Scanner y sus propiedades dentro de nuestro programa. El método public static void main (
String [] args ) de la línea 9 es el encargado de ejecutar el programa, es decir, representa el
punto inicial de toda aplicación Java. Sin esta instrucción el programa no puede hacer nada.
2. En Scanner in = new Scanner ( System.in ); creamos un objeto de tipo Scanner al que le
llamamos in. Mediante este objeto podemos acceder a los diferentes métodos y propiedades
que nos proporciona la clase Scanner. El argumento ( System.in ) permite al programa leer las
respuestas del usuario que escribe desde el teclado.
3. A continuación declaramos las variables edad, nombre y dirección. La primera es de
tipo int, y se encarga de guardar un numero entero ( la edad del usuario ). La segunda y
tercera contendrán cadenas de caracteres, en Java este tipo de variables se declaran con la
palabra reservada String.
4. Desde la línea 20 hasta la 25 utilizamos el código System.out.println (“….”) para imprimir texto
en pantalla, las preguntas se ubican entre comillas dobles. Cuando el usuario responde a una
pregunta, el objeto in de la clase Scanner llama al método next () y nextInt(), para leer la
respuesta y almacenar su valor en la variable correspondiente.
5. Finalmente utilizamos la instrucción System.out.printf () para mostrar un texto al usuario con
su nombre, edad y lugar de residencia.

Problema 2:
Definir un vector de 5 componentes de tipo float que representen las alturas de 5
personas.
Obtener el promedio de las mismas. Contar cuántas personas son más altas que
el promedio y cuántas más bajas.
Programa:
import java.util.Scanner;
public class PruebaVector2 {
private Scanner teclado;
private float[] alturas;
private float promedio;

public void cargar() {


teclado=new Scanner(System.in);
alturas=new float[5];
for(int f=0;f<5;f++) {
System.out.print("Ingrese la altura
de la persona:");
alturas[f]=teclado.nextFloat();
}
}

public void calcularPromedio() {


float suma;
suma=0;
for(int f=0;f<5;f++) {
suma=suma+alturas[f];
}
promedio=suma/5;
System.out.println("Promedio de
alturas:"+promedio);
}

public void mayoresMenores() {


int may,men;
may=0;
men=0;
for(int f=0;f<5;f++) {
if (alturas[f]>promedio) {
may++;
} else {
if (alturas[f]<promedio) {
men++;
}
}
}
System.out.println("Cantidad de personas
mayores al promedio:"+may);
System.out.println("Cantidad de personas
menores al promedio:"+men);
}

public static void main(String[] ar) {


PruebaVector2 pv2=new PruebaVector2();
pv2.cargar();
pv2.calcularPromedio();
pv2.mayoresMenores();
}
}
Definimos como atributo un vector donde almacenaremos las alturas:
private float[] alturas;
En la carga creamos el vector indicando que reserve espacio para 5 componentes:
alturas=new float[5];
Procedemos seguidamente a cargar todos sus elementos:
for(int f=0;f<5;f++) {
System.out.print("Ingrese la altura de la
persona:");
alturas[f]=teclado.nextFloat();
}
En otro método procedemos a sumar todas sus componentes y obtener el
promedio. El promedio lo almacenamos en un atributo de la clase ya que lo
necesitamos en otro método:
public void calcularPromedio() {
float suma;
suma=0;
for(int f=0;f<5;f++) {
suma=suma+alturas[f];
}
promedio=suma/5;
System.out.println("Promedio de alturas:"+promedio);
}
Por último en un tercer método comparamos cada componente del vector con el
atributo promedio, si el valor almacenado supera al promedio incrementamos un
contador en caso que sea menor al promedio incrementamos otro contador:
public void mayoresMenores() {
int may,men;
may=0;
men=0;
for(int f=0;f<5;f++) {
if (alturas[f]>promedio) {
may++;
} else {
if (alturas[f]<promedio) {
men++;
}
}
}
System.out.println("Cantidad de personas mayores al
promedio:"+may);
System.out.println("Cantidad de personas menores al
promedio:"+men);
}
Importante:
En este problema podemos observar una ventaja de tener almacenadas todas las
alturas de las personas. Si no conociéramos los vectores tenemos que cargar otra
vez las alturas por teclado para compararlas con el promedio.
Mientras el programa está en ejecución tenemos el vector alturas a nuestra
disposición. Es importante tener en cuenta que cuando finaliza la ejecución del
programa se pierde el contenido de todas las variables (simples y vectores)
Problema 3:
Una empresa tiene dos turnos (mañana y tarde) en los que trabajan 8 empleados
(4 por la mañana y 4 por la tarde)
Confeccionar un programa que permita almacenar los sueldos de los empleados
agrupados por turno.
Imprimir los gastos en sueldos de cada turno.
Programa:
import java.util.Scanner;
public class PruebaVector3 {
private Scanner teclado;
private float[] turnoMan;
private float[] turnoTar;

public void cargar() {


teclado=new Scanner(System.in);
turnoMan=new float[4];
turnoTar=new float[4];
System.out.println("Sueldos de empleados
del turno de la mañana.");
for(int f=0;f<4;f++) {
System.out.print("Ingrese sueldo:");
turnoMan[f]=teclado.nextFloat();
}
System.out.println("Sueldos de empleados
del turno de la tarde.");
for(int f=0;f<4;f++) {
System.out.print("Ingrese sueldo:");
turnoTar[f]=teclado.nextFloat();
}
}

public void calcularGastos() {


float man=0;
float tar=0;
for(int f=0;f<4;f++){
man=man+turnoMan[f];
tar=tar+turnoTar[f];
}
System.out.println("Total de gastos del
turno de la mañana:"+man);
System.out.println("Total de gastos del
turno de la tarde:"+tar);
}

public static void main(String[] ar){


PruebaVector3 pv=new PruebaVector3();
pv.cargar();
pv.calcularGastos();
}
}
Definimos dos atributos de tipo vector donde almacenaremos los sueldos de los
empleados de cada turno:
private float[] turnoMan;
private float[] turnoTar;
Creamos los vectores con cuatro elementos cada uno:
turnoMan=new float[4];
turnoTar=new float[4];
Mediante dos estructuras repetitivas procedemos a cargar cada vector:
System.out.println("Sueldos de empleados del turno de la
mañana.");
for(int f=0;f<4;f++) {
System.out.print("Ingrese sueldo:");
turnoMan[f]=teclado.nextFloat();
}
System.out.println("Sueldos de empleados del turno de la
tarde.");
for(int f=0;f<4;f++) {
System.out.print("Ingrese sueldo:");
turnoTar[f]=teclado.nextFloat();
}
En otro método procedemos a sumar las componentes de cada vector y mostrar
dichos acumuladores:
float man=0;
float tar=0;
for(int f=0;f<4;f++){
man=man+turnoMan[f];
tar=tar+turnoTar[f];
}
System.out.println("Total de gastos del turno de la
mañana:"+man);
System.out.println("Total de gastos del turno de la
tarde:"+tar);