Java - Modelo - jtable¡¡¡¡¡¡¡¡

 
Vista:

Modelo - jtable¡¡¡¡¡¡¡¡

Publicado por Karla (3 intervenciones) el 27/08/2009 15:10:37
Hola a todos,
la verdad es q no se muy bien como explicarme.
En mi proyecto tengo una clase Persona con atributos(id,nombre,apellido1,apellido2,direccion,edad,pais,........) y una clase ListaPersonas(Vector) entonces kiero visualizar en un jtable SOLO el id, nombre y apellidos de las personas (no la direccion ni el pais, edad......)

El modelo del jtable yo pensaba utilizar la Clase ListaPersonas pero como no kiero visualizar todos los datos, que hago??? me creo otra clase PersoAux solo con el id,nombre,apellido1,apellido2 y hago el modelo de tabla utilizando la clase PersoAux??????????????????????????
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Modelo - jtable¡¡¡¡¡¡¡¡

Publicado por octicoco (74 intervenciones) el 30/08/2009 03:06:47
Bueno si entendi bien tienes los datos de las personas en el vector (es decir muchas Personas en un Vector y esas personas tienen algunos datos y quieres mostrar solo algunos).

Lo mejor que puedes hacer es algo asi:

existe en java algo llamado DefaultTableModel. lo importas:

import javax.swing.table.DefaultTableModel;

eso te servira para ingresar los datos al jtable.

lo que debes hacer es:

private DefaultTableModel dtm;

public void cargarDatosTabla(JTable tabla){
String[] titulos = {"ID Persona", "Nombre", "Apellido"};
Object[][] datos = {};
dtm = new DefaultTableModel(datos, titulos);
tabla.setModel(dtm);
int fila = 0;
try {
while (fila < TAMAÑO DEL VECTOR){

Object[] datosFila = {AGARRAR ID PERSONA DEL VECTOR, AGARRAR NOMBRE DEL VECTOR, AGARRAR APELLIDO DEL VECTOR};
dtmProv.addRow(datosFila);//.setValueAt("VALOR", fila, 0);
fila++;
}

}
catch (Exception ex){
System.out.println("Error al cargar datos en la tabla");
ex.printStackTrace();
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Modelo - jtable¡¡¡¡¡¡¡¡

Publicado por octicoco (74 intervenciones) el 30/08/2009 03:10:54
Bueno si entendi bien tienes los datos de las personas en el vector (es decir muchas Personas en un Vector y esas personas tienen algunos datos y quieres mostrar solo algunos).

Lo mejor que puedes hacer es algo asi:

existe en java algo llamado DefaultTableModel. lo importas:

import javax.swing.table.DefaultTableModel;

eso te servira para ingresar los datos al jtable.

lo que debes hacer es:

private DefaultTableModel dtm;

public void cargarDatosTabla(JTable tabla){
String[] titulos = {"ID Persona", "Nombre", "Apellido"};
Object[][] datos = {};
dtm = new DefaultTableModel(datos, titulos);
//Con esto le decimos a la tabla que los datos estaran en dtm y cada vez q actualicemos el dtm se actualiza la tabla
tabla.setModel(dtm);
int fila = 0;
try {
while (fila < TAMAÑO DEL VECTOR){
//Agarra el nombre de la persona de esta forma (seguro es algo por el estilo)
String nombre = VectorPERSONA.get(fila).getNombre();
//Agarra el ID y el apellido
String id = VectorPERSONA.get(fila).getID();
String Apellido = VectorPERSONA.get(fila).getApellido();
Object[] datosFila = {id, nombre, apellido};
//Con esto agregas el los datos al DTM
dtmProv.addRow(datosFila);
fila++;
}

}
catch (Exception ex){
System.out.println("Error al cargar datos en la tabla");
ex.printStackTrace();
}
}

Espero que te sirva, cualquier cosa me envias un mail a octicoco en GMAIL o me contactas por MSN: octiccoo en HOTMAIL

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Modelo - jtable¡¡¡¡¡¡¡¡

Publicado por Karla (1 intervención) el 02/09/2009 17:30:43
muchas Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Modelo - Otra Opcion

Publicado por Javier (94 intervenciones) el 05/09/2009 22:46:04
Lo que puedes hacer tambien es si quieres usar un arreglo de una clase y ponerlo
en un jtable ,pero solo algunos campos:
debes usar AbstractTableModel algo asi:
/**
Este es un ejemplo de un arreglo de PedidoD que se agregan a un JTable
*/
//DECLARAS LAS VARIABLES
public PedidoD[] pedidoD;
public String[] columnas;
public tablaDetallePedidos2 modelTable2;
//INICIALIZAS LOS DATOS
this.columnas = new String[]{"Id ", "Cantidad", "Codigo", "Nombre Articulo", "U.M.", "%Dscto.", "Dscto.", "P.U.", "SubTotal"};
this.pedidoD = new PedidoD[0];//AQUI LE CARGAS EL ARREGLO DE LA CLASE
modelTable2 = new tablaDetallePedidos2();
jTable1.setModel(modelTable2);
//CREAR UNA CLASE INTERNA
public class tablaDetallePedidos2 extends AbstractTableModel {

public tablaDetallePedidos2() {
}
Class[] types = new Class[]{
java.lang.Integer.class, java.math.BigDecimal.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.math.BigDecimal.class, java.math.BigDecimal.class, java.math.BigDecimal.class, java.math.BigDecimal.class
};
boolean[] canEdit = new boolean[]{
false, false, false, false, false, false, false, false, false
};

public void setCanEdit(boolean[] canEdit) {
this.canEdit = canEdit;
}

@Override
public Class getColumnClass(int columnIndex) {
return types[columnIndex];
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit[columnIndex];
}

@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0://indice
if (aValue instanceof Integer) {
pedidoD[rowIndex].setNitem((Integer) aValue);
} else {
pedidoD[rowIndex].setNitem((Integer) null);
}
break;
case 1:
if (aValue instanceof BigDecimal) {
pedidoD[rowIndex].setNcantidad((BigDecimal) aValue);
BigDecimal cantidad = new BigDecimal(0);
BigDecimal precio = new BigDecimal(0);
BigDecimal subtotal = new BigDecimal(0);
cantidad = new BigDecimal(String.valueOf(aValue));
if (pedidoD[rowIndex].getNprecio_unitario() != null) {
precio = pedidoD[rowIndex].getNprecio_unitario();
}
subtotal = cantidad.multiply(precio);
pedidoD[rowIndex].setNprecio_importe(subtotal);
jFormattedTextField1.setValue(sumarTotalimporte());
} else {
pedidoD[rowIndex].setNcantidad((BigDecimal) getValueAt(rowIndex, 1));
}
break;
case 2:
if (aValue instanceof String) {
pedidoD[rowIndex].setCcod_articulo((String) aValue);
} else {
pedidoD[rowIndex].setCcod_articulo((String) null);
}
break;
case 3:
if (aValue instanceof String) {
pedidoD[rowIndex].setCnom_articulo((String) aValue);
} else {
pedidoD[rowIndex].setCnom_articulo((String) null);
}
break;
case 4:
if (aValue instanceof String) {
pedidoD[rowIndex].setCunidad((String) aValue);
} else {
pedidoD[rowIndex].setCunidad((String) aValue);
}
break;
case 5:
if (aValue instanceof BigDecimal) {
pedidoD[rowIndex].setNporc_dscto((BigDecimal) aValue);
} else {
pedidoD[rowIndex].setNporc_dscto((BigDecimal) null);
}
break;
case 6:
if (aValue instanceof BigDecimal) {
pedidoD[rowIndex].setPorcentaje((BigDecimal) aValue);
} else {
pedidoD[rowIndex].setPorcentaje((BigDecimal) aValue);
}
break;
case 7:
if (aValue instanceof BigDecimal) {
pedidoD[rowIndex].setNprecio_unitario((BigDecimal) aValue);
BigDecimal cantidad = new BigDecimal(0);
BigDecimal precio = new BigDecimal(0);
BigDecimal subtotal = new BigDecimal(0);
precio = new BigDecimal(String.valueOf(aValue));
if (pedidoD[rowIndex].getNcantidad() != null) {
cantidad = pedidoD[rowIndex].getNcantidad();
}
subtotal = cantidad.multiply(precio);
pedidoD[rowIndex].setNprecio_importe(subtotal);
jFormattedTextField1.setValue(sumarTotalimporte());
} else {
pedidoD[rowIndex].setNprecio_unitario((BigDecimal) null);
}
break;
case 8:
if (aValue instanceof BigDecimal) {
pedidoD[rowIndex].setNprecio_importe((BigDecimal) aValue);
} else {
pedidoD[rowIndex].setNprecio_importe((BigDecimal) null);
}
break;
}
fireTableRowsUpdated(rowIndex, rowIndex);
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return (Object) pedidoD[rowIndex].getNitem();
case 1:
return (Object) pedidoD[rowIndex].getNcantidad();
case 2:
return (Object) pedidoD[rowIndex].getCcod_articulo();
case 3:
return (Object) pedidoD[rowIndex].getCnom_articulo();
case 4:
return (Object) pedidoD[rowIndex].getCunidad();
case 5:
return (Object) pedidoD[rowIndex].getNporc_dscto();
case 6:
return (Object) pedidoD[rowIndex].getPorcentaje();
case 7:
return (Object) pedidoD[rowIndex].getNprecio_unitario();
case 8:
return (Object) pedidoD[rowIndex].getNprecio_importe();
default:
return null;
}

}

@Override
public int getColumnCount() {
return columnas.length;
}

@Override
public int getRowCount() {
return pedidoD.length;
}

@Override
public String getColumnName(int column) {
return columnas[column];
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar