Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/10/2013, 23:47
ssssaaamm
 
Fecha de Ingreso: octubre-2013
Ubicación: En mi casita
Mensajes: 7
Antigüedad: 10 años, 7 meses
Puntos: 0
Pregunta 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);
    }