03/10/2013, 23:47
|
| | Fecha de Ingreso: octubre-2013 Ubicación: En mi casita
Mensajes: 7
Antigüedad: 11 años, 1 mes Puntos: 0 | |
Error Al inicializar un JTable e usando una clase AbstractTableModel Hola, no entiendo porque sucede este error.. Mi interfaz grafica consiste en que debo mostrar una lista de productos, con su respectivo precio y la cantidad disponible. Ademas de datos en otra tabla que aún no la he implementado porque se me ha presentado el siguiente problemita:
[URL="http://www.subirimagenes.net/i/131004064415224533.jpg"]http://www.subirimagenes.net/i/131004064415224533.jpg[/URL]
Mis codigos son los siguientes:
ESTA ES LA CLASE QUE CONTIENE EL FORMULARIO Y TODOS LOS COMPONENTES
Código:
package consultaproductos;
import javax.swing.JOptionPane;
public class ConsultarProductos extends javax.swing.JFrame
{
TableModelProductosDisponibles productosDisponiblesModel=new TableModelProductosDisponibles();
Factura facturaModel=new Factura();
public ConsultarProductos()
{
initComponents();
inicializarColumnasTablaProductosDisponibles();
}
private void inicializarColumnasTablaProductosDisponibles()
{
javax.swing.table.TableColumnModel tCModel=new javax.swing.table.DefaultTableColumnModel();
for(int i=0;i<3;i++)
{
javax.swing.table.TableColumn columna=new javax.swing.table.TableColumn();
switch(i)
{
case 0: columna.setHeaderValue("Producto"); break;
case 1: columna.setHeaderValue("Precio"); break;
case 2: columna.setHeaderValue("Cantidad");
}
tCModel.addColumn(columna);
}
tablaDisponibles.setColumnModel(tCModel);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
tablaDisponibles = new javax.swing.JTable();
jLabel1 = new javax.swing.JLabel();
jScrollPane2 = new javax.swing.JScrollPane();
tablaCompras = new javax.swing.JTable();
jLabel2 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
tablaDisponibles.setModel(productosDisponiblesModel);
jScrollPane1.setViewportView(tablaDisponibles);
jLabel1.setText("Productos Disponibles:");
tablaCompras.setModel(facturaModel);
jScrollPane2.setViewportView(tablaCompras);
jLabel2.setText("Productos a Comprar:");
jButton1.setText("Agregar bolsa de compras");
jButton2.setText("Devolver producto");
jButton3.setText("Realizar Compra");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 267, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1)
.addComponent(jButton1))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addGap(18, 18, 18))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 158, Short.MAX_VALUE)
.addComponent(jButton3))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(20, 20, 20)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 240, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton2)
.addComponent(jButton1))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 16, Short.MAX_VALUE)
.addComponent(jButton3)
.addGap(22, 22, 22))))
);
pack();
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable tablaCompras;
private javax.swing.JTable tablaDisponibles;
// End of variables declaration
}
ESTE ES EL CODIGO DE LA CLASE PRODUCTO
Código:
package consultaproductos;
public class Producto
{
private String nombre;
private double precio;
private int cantidad;
public void setNombre(String nombre){
this.nombre=nombre;
}
public String getNombre(){
return nombre;
}
public void setPrecio(double precio){
this.precio=precio;
}
public double getPrecio(){
return precio;
}
public void setCantidad(int cantidad){
this.cantidad=cantidad;
}
public int getCantidad(){
return cantidad;
}
}
ESTE ES EL CODIGO DE MI MODELCLASS PARA MI TABLA
Código:
package consultaproductos;
import javax.swing.table.AbstractTableModel;
import java.util.List;
import java.util.ArrayList;
public class TableModelProductosDisponibles extends AbstractTableModel
{
ArrayList<Producto> listaProductosDisponibles=new ArrayList<Producto>(); //Lo que está dentro de <> se llama genericidad. La clase ArrayList permite crear una lista redimensionable
@Override
public int getRowCount(){
return listaProductosDisponibles.size();
}
@Override
public int getColumnCount(){
return 3;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex){
Object returning=new Object();
switch(columnIndex){
case 0: returning=listaProductosDisponibles.get(rowIndex).getNombre();
break;
case 1: listaProductosDisponibles.get(rowIndex).getPrecio();
break;
case 3: listaProductosDisponibles.get(rowIndex).getCantidad();
}
return returning;
}
}
ESTE ES EL PRINCIPAL
Código:
package consultaproductos;
import java.util.Random;
public class Prueba
{
public static void main(String[] args)
{
String[] nombreProductos={"Lapicero","Cuaderno","Aceite","Pintura","Lentes","Pantalon","Camiseta","Reloj","Calculadora","Computadora","Vaso","Minas","Bolson","Celular","Manzana"};
ConsultarProductos ventanaDeConsulta=new ConsultarProductos();
Random aleatorio=new Random();
for(int i=0;i<nombreProductos.length;i++)
{
Producto prod=new Producto();
prod.setNombre(nombreProductos[i]);
prod.setPrecio(aleatorio.nextDouble()*50);
prod.setCantidad(aleatorio.nextInt(50));
System.out.println(prod.getCantidad());
System.out.println(prod.getPrecio());
System.out.println(prod.getNombre());
ventanaDeConsulta.productosDisponiblesModel.listaProductosDisponibles.add(prod);
}
ventanaDeConsulta.setVisible(true);
}
|