Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/11/2014, 08:14
lucho248
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
paso de un DefaultTableModel a otro

Hola comunidad, tengo el siguiente problema.
He leido en este foro y en internet, y los distintos ejemplos no me han ayudado con el tema puntual que tengo..

Tengo el siguiente esquema:
tengo un JFrame en el cual es para tickar las compras (supermercado), y como suele pasar que viene un cliente, pasa algunos articulos, los pasa, y se va a buscar otros...

mientras tanto para seguir cobrando al siguiente, lo que hago es "guardar", la lista de articulos comprados en un boton (con su objeto de DefaulTableModel asociado).
Puedo guardar hasta 10 ticket a la vez.

paso cod de lo que tengo:
Código Declaracion: :
Ver original
  1. public DefaultTableModel model;
  2. public static DefaultTableModel mM1, mM2, mM3, mM4, mM5, mM6, mM7, mM8, mM9, mM10;
  3. private List<DefaultTableModel> listModel;
  4. private JTable tabla;
  5. private JButton btnM1, btnM2, btnM3, btnM4, btnM5, btnM6, btnM7, btnM8, btnM9, btnM10;

Código metodos:
Ver original
  1. listModel = new ArrayList<DefaultTableModel>();
  2.  
  3. /*la declaracion de todos los botones es la misma*/
  4. btnM1 = new JButton();     
  5.         btnM1.addActionListener(new ActionListener() {
  6.             public void actionPerformed(ActionEvent arg0) {
  7.                 botonTicket(btnM1, mM1); //evento para asignar los modelos
  8.             }
  9.         });
  10.         btnM1.setFont(new Font("Tahoma", Font.PLAIN, 30));
  11.         btnM1.setBounds(744, 20, 80, 50);
  12.         contentPane.add(btnM1);

Si el boton tiene o no asignado un ticket, le asigno el texto de: "Mn", donde "n" es la cantidad de ticket ya guardados en lista.
Código Java:
Ver original
  1. public void botonTicket(JButton boton, DefaultTableModel modN){
  2.         DefaultTableModel auxModel, aux;
  3.         try {
  4.             auxModel = (DefaultTableModel) tabla.getModel();
  5.             boolean celdaVacia = (auxModel.getValueAt(0, 0).equals(null) || auxModel.getValueAt(0, 0).equals(""));
  6.            
  7.                 listModel.add(auxModel);    //agrego el modelo al boton
  8.                
  9.                 if (boton.getText().length() > 0)
  10.                 {
  11.                     initTabla(modN); //esta en el boton
  12.                     modN = auxModel;
  13.                     listModel.remove(modN); //quito el modelo del boton                                
  14.                 }else
  15.                 {
  16.                    
  17.                     modelos(auxModel, modN);
  18.                     initTabla(null);
  19.                 }
  20.                 boton.setText("M"+listModel.size());           
  21.            
  22.         } catch (Exception e) {
  23.             //quito modN de la lista y borro el boton
  24.             if(boton.getText().length() > 0){
  25.                 listModel.remove(modN); //quito el modelo del boton                                
  26.                 initTabla(modN); //esta en el boton                    
  27.                 boton.setText("");
  28.             }          
  29.            
  30.             e.printStackTrace();
  31.            
  32.         }
  33.        
  34.     }
  35.  
  36.     public void modelos(DefaultTableModel modViejo, DefaultTableModel modNuevo) {
  37.        for (int i=0;i<modViejo.getRowCount(); i++) {
  38.             Object fila [] = new Object [modViejo.getColumnCount()];
  39.             for (int j=0; j<modViejo.getColumnCount(); j++){
  40.                 fila[j] = modViejo.getValueAt(i,j);
  41.             }
  42.             modNuevo.addRow(fila);
  43.         }        
  44.     }
  45.  
  46. public void initTabla(TableModel mod){
  47.         if (mod == null){
  48.             model = new DefaultTableModel(
  49.                     new Object[][] {
  50.                             {null, null, null, null, null, null, null},
  51.                             {null, null, null, null, null, null, null},
  52.                             {null, null, null, null, null, null, null},
  53.                             {null, null, null, null, null, null, null},
  54.                         },
  55.                         new String[] {
  56.                             "C\u00F3digo", "Detalle", "Cantidad", "Imp.Interno", "Pr.Unit.", "Total", "SN"
  57.                         }
  58.                     ) {
  59.                         Class[] columnTypes = new Class[] {
  60.                             String.class, String.class, String.class, String.class, String.class, String.class, String.class
  61.                         };
  62.                         public Class getColumnClass(int columnIndex) {
  63.                             return columnTypes[columnIndex];
  64.                         }
  65.                     };
  66.             tabla.setModel(model);
  67.            
  68.             tabla.getColumnModel().getColumn(0).setMinWidth(50);
  69.             tabla.getColumnModel().getColumn(1).setPreferredWidth(100);
  70.             tabla.getColumnModel().getColumn(1).setMinWidth(60);
  71.             tabla.getColumnModel().getColumn(3).setMinWidth(30);
  72.             tabla.getColumnModel().getColumn(4).setMinWidth(30);
  73.         }else{
  74.             int fila = mod.getRowCount();
  75.             int col = mod.getColumnCount();
  76.            
  77.             for (int x = 0; x < fila; x++){
  78.                 for (int y = 0; y < col; y++){
  79.                    
  80.                     model.setValueAt(mod.getValueAt(x, y), x, y );
  81.                 }
  82.             }
  83. //          model = md;
  84.             tabla.setModel(model);
  85.         }  
  86.        
  87.     }

el problema es el siguiente, cuando hace click en un boton, "creo" asigna bien lo que esta en la tabla (articulos cargados para tickar), al modelo del boton, pero...

Cuando hace click en el boton, para "volcar" lo que se encuentra en ese modelo correspondiente, no lo esta asignado al modelo de la tabla. No me lo carga o muestra.

Ya no tengo idea que probar porque hace dias que estoy dando vuelta con este tema.

Puede ser que no me este guardando el model de la tabla en el modelo correspondiente del boton (el que paso por parametro)?

Cualquier ayuda sera bienvenida.
Si hay alguna forma de pasar el codigo de la clase, me avisan porque tiene unas mil lineas.

Saludos.