将选定数据从frame1中的jtable复制到frame2中的另一个表

我在frame1中有一个JTable2,在frame2中有一个JTable1。 我想复制并从table2发送选定的数据到table1。 我该怎么做 ?

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); } } 

首先看看如何使用表格 。

如果要“复制”所选数据,则需要知道选择了哪些行,请参阅JTable#getSelectedRows

你使用DbUtils让自己变得困难,因为你已经失去了将对象从一个模型转移到另一个模型的能力。

基本的想法是将原始表中的值复制到一个新的TableModel并将其传递给第二个窗口,类似于

 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); } } 

例如。 现在您只需要将model传递给第二个窗口并将其应用于其中包含的JTable