java - una - Copie los datos seleccionados de un jtable en frame1 a otra tabla en frame2
seleccionar una fila de un jtable desde codigo (1)
Tengo un JTable2 en frame1 y JTable1 en frame2. Quiero copiar y enviar datos seleccionados de table2 a table1. cómo lo hago ?
private void jButton3MouseClicked(java.awt.event.MouseEvent evt) {
String sql = "select * from table1 where Bill_No like ''"+jTextField2.getText()+"''";
try{
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
jTable2.setModel(DbUtils.resultSetToTableModel(rs));
JFrame NewJFrame2 = new NewJFrame2();
NewJFrame2.setVisible(true);
int i=0;
while(rs.next()) {
Object bno = rs.getString("Bill No");
Object bamount = rs.getString("Bill Amount");
Object btds = rs.getString("TDS");
Object btax = rs.getString("Tax");
Object bpayable = rs.getString("Payable");
jTable1.getModel().setValueAt(bno,i, 0 );
jTable1.getModel().setValueAt(bamount, i, 1);
jTable1.getModel().setValueAt(btds, i, 2);
jTable1.getModel().setValueAt(btax, i, 3);
jTable1.getModel().setValueAt(bpayable, i, 4);
System.out.println(i);
i++;
}
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
Comience por echar un vistazo a Cómo usar las tablas .
Si desea "copiar" los datos seleccionados, necesitará saber qué filas están seleccionadas, consulte JTable#getSelectedRows
.
Te estás haciendo la vida difícil usando DbUtils
ya que has perdido la capacidad de simplemente transferir los objetos de un modelo a otro.
La idea básica sería copiar los valores de la tabla original en un nuevo TableModel
tabla y pasarlo a la segunda ventana, algo así como
TableModel original = table.getModel();
DefaultTableModel model = new DefaultTableModel(table.getSelectedRowCount(), original.getColumnCount());
for (int col = 0; col < original.getColumnCount(); col++) {
model.addColumn(original.getColumnName(col));
}
int[] selectedRows = table.getSelectedRows();
for (int targetRow = 0; targetRow < selectedRows.length; targetRow++) {
int row = selectedRows[targetRow];
int modelRow = table.convertRowIndexToModel(row);
for (int col = 0; col < original.getColumnCount(); col++) {
model.setValueAt(original.getValueAt(modelRow, col), targetRow, col);
}
}
por ejemplo. Ahora solo necesita pasar el model
a la segunda ventana y aplicarlo a la JTable
contenida en