Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > PASAR REGISTROS A UN JTABLE

Hola compañeros, tengo un problema que no sé como solucionarlo.
Tengo un JTable (tblTabla1) que mediante un método, pasa las filas a otro JTable (tblTabla3) y por otro lado, mediante otro método, traigo registro de una Base de Datos al mismo tblTabla3.
Individualmente pasan bien lo datos al tblTabla3, pero necesito que pase los registros del tblTabla1 al tblTabla3 y a continuación los de la BBDD.
Copio los métodos traspasaProductocero() (pasa los datos deñ tblTabla1 al tblTabla3) y traspasaProductocero() (pasa los registros de la BBDD al tblTabla3).

//Traspasa los productos con saldo cero en el lote del JTabla1. Trae del JTable2 vat01 = Código del producto.
public void traspasaProductocero(){
String vat01t = "";
String vat02t = "";
filan = 0;
DefaultTableModel modelo31 = (DefaultTableModel)tblTabla3.getModel();
for (int filap = 0; filap < tblTabla1.getRowCount(); filap++) {
// Captura en variables los datos de la fila del JTable2 y obtiene la cantidad de producto por aplicar al lote y el código y el nombre del producto fito.
vat01t = (String) modelo1.getValueAt(filap, 3); //Código
vat02t = (String) modelo1.getValueAt(filap, 6); //Existencia
if (vat01.equals(vat01t)&&(vat02t.equals("0"))) {
// Crear un vector
String Vector[] = new String[7];
// Le asignamos al vector la captura de los datos del JTable4 en FormFitoSalidaModificar.
Vector[0] = tblTabla1.getValueAt(filap, 5).toString();
Vector[1] = "";
Vector[2] = tblTabla1.getValueAt(filap, 3).toString();
Vector[3] = tblTabla1.getValueAt(filap, 4).toString();
Vector[4] = "";
Vector[5] = "";
Vector[6] = tblTabla1.getValueAt(filap, 2).toString();
// Llamamos al modelo del programa2 y le agregamos el vector como una nueva fila
modelo31.addRow(Vector);
filan = filan + 1;
}
}
buscaProducto();
}

//Busca el lote del producto fito
public void buscaProducto(){
//Para poner los títulos de la tabla
String[] titulos = {"LOTE", "FECHA", "COD.","PRODUCTO", "PRESENTACIÓN", "UNIDAD", "EXISTENCIAS"};
//Para agregar los elementos de la tabla
String[] registro = new String[7];
modelo3 = new DefaultTableModel(null, titulos);
//Para establecer la conexión
ConexionMySQL mysql = new ConexionMySQL();
Connection cn = mysql.Conectar();
//Crea la consulta MySQL
SQL = "SELECT Lote, Fecha, Codproducto, Producto, Presentacion, Unidad, Existencia FROM fito_lotes WHERE Codproducto = '"+vat01+"' AND Existencia > '0' "
+ "AND (Movimiento ='Alta' OR Movimiento = 'Alta Manual') AND Existencia >0";
try {
PreparedStatement st = cn.prepareStatement(SQL);
ResultSet rs = st.executeQuery(SQL);
while(rs.next()){
registro[0] = rs.getString("Lote");
va12m = rs.getString("Fecha").toString();
//Método para cambiar la configuración del dato de yyyy-MM-dd a dd-MM-yyyy
CambiaFormatoFechaVisible();
registro[1] = va12m;
// registro[1] = rs.getString("Fecha");
registro[2] = rs.getString("Codproducto");
registro[3] = rs.getString("Producto");
registro[4] = rs.getString("Presentacion");
registro[5] = rs.getString("Unidad");
registro[6] = rs.getString("Existencia");
modelo3.addRow(registro);
}
//Se agregan los datos a la tabla
tblTabla3.setModel(modelo3);
//Posición de los registros de las columnas 3 y 4 del JTable a la derecha (RIGHT)
DefaultTableCellRenderer tcr1 = new DefaultTableCellRenderer();
tcr1.setHorizontalAlignment(SwingConstants.CENTER);
tblTabla3.getColumnModel().getColumn(0).setCellRenderer(tcr1);
tblTabla3.getColumnModel().getColumn(1).setCellRenderer(tcr1);
tblTabla3.getColumnModel().getColumn(2).setCellRenderer(tcr1);
tblTabla3.getColumnModel().getColumn(3).setCellRenderer(tcr1);
tblTabla3.getColumnModel().getColumn(4).setCellRenderer(tcr1);
tblTabla3.getColumnModel().getColumn(5).setCellRenderer(tcr1);
tblTabla3.getColumnModel().getColumn(6).setCellRenderer(tcr1);
int[] anchos ={8,10,10,400,10,5,10};
for (int i = 0; i < tblTabla3.getColumnCount(); i++) {
tblTabla3.getColumnModel().getColumn(i).setPreferredWidth(anchos);
}
TableRowSorter<TableModel> elQueOrdena = new TableRowSorter<TableModel>(modelo3); // 2 de 3 líneas para ordenar la tabla
tblTabla3.setRowSorter(elQueOrdena); // 3 de 3 líneas para ordenar la tabla
rs.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
PreparedStatement st = null;
ResultSet rs = null;
}

Gracias anticipadas y haber si me dais alguna luz para solventarlo.

diciembre 22, 2019 | Registered Commentertono2

Guenas.

Lo primero que tienes que hacer es pensar en el paradigma MODELO/VISTA/CONTROLADOR

El JTable es una vista/controlador. El modelo, es decir la información base no cambia. Tu primera vista mostrara lo que quieres y mediante el controlador (que puede estar en la misma vista) genera una nueva vista (o un sub-modelo) que solo acepte los datos que te interesan. No debes tener una copia del modelo, debe ser otra forma de verlo. Las copias deben actualizarse, el modelo no.

Un saludo,
Paposo

febrero 1, 2020 | Unregistered CommenterPaposo