将选定数据从frame1中的jtable复制到frame2中的另一个表[英] Copy selected data from a jtable in frame1 to another table in 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 中包含的

本文地址:https://www.itbaoku.cn/post/978653.html