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
public DefaultTableModel model; public static DefaultTableModel mM1, mM2, mM3, mM4, mM5, mM6, mM7, mM8, mM9, mM10; private List<DefaultTableModel> listModel; private JTable tabla; private JButton btnM1, btnM2, btnM3, btnM4, btnM5, btnM6, btnM7, btnM8, btnM9, btnM10;
Código metodos:
Ver original
listModel = new ArrayList<DefaultTableModel>(); /*la declaracion de todos los botones es la misma*/ btnM1 = new JButton(); btnM1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { botonTicket(btnM1, mM1); //evento para asignar los modelos } }); btnM1.setFont(new Font("Tahoma", Font.PLAIN, 30)); btnM1.setBounds(744, 20, 80, 50); 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
DefaultTableModel auxModel, aux; try { boolean celdaVacia = (auxModel.getValueAt(0, 0).equals(null) || auxModel.getValueAt(0, 0).equals("")); listModel.add(auxModel); //agrego el modelo al boton if (boton.getText().length() > 0) { initTabla(modN); //esta en el boton modN = auxModel; listModel.remove(modN); //quito el modelo del boton }else { modelos(auxModel, modN); initTabla(null); } boton.setText("M"+listModel.size()); //quito modN de la lista y borro el boton if(boton.getText().length() > 0){ listModel.remove(modN); //quito el modelo del boton initTabla(modN); //esta en el boton boton.setText(""); } e.printStackTrace(); } } for (int i=0;i<modViejo.getRowCount(); i++) { for (int j=0; j<modViejo.getColumnCount(); j++){ fila[j] = modViejo.getValueAt(i,j); } modNuevo.addRow(fila); } } if (mod == null){ {null, null, null, null, null, null, null}, {null, null, null, null, null, null, null}, {null, null, null, null, null, null, null}, {null, null, null, null, null, null, null}, }, "C\u00F3digo", "Detalle", "Cantidad", "Imp.Interno", "Pr.Unit.", "Total", "SN" } ) { Class[] columnTypes = new Class[] { }; public Class getColumnClass(int columnIndex) { return columnTypes[columnIndex]; } }; tabla.setModel(model); tabla.getColumnModel().getColumn(0).setMinWidth(50); tabla.getColumnModel().getColumn(1).setPreferredWidth(100); tabla.getColumnModel().getColumn(1).setMinWidth(60); tabla.getColumnModel().getColumn(3).setMinWidth(30); tabla.getColumnModel().getColumn(4).setMinWidth(30); }else{ int fila = mod.getRowCount(); int col = mod.getColumnCount(); for (int x = 0; x < fila; x++){ for (int y = 0; y < col; y++){ model.setValueAt(mod.getValueAt(x, y), x, y ); } } // model = md; tabla.setModel(model); } }
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.