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 originalpublic 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 originallistModel = 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 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.