點擊「→」將左表選中行移至右表,但右表數據被覆蓋,只保留最後一行。
代碼中 `rowData` 為同一 `Vector` 引用,反覆 `add` 導致所有行指向同一對象,且 `data.add(rowData)` 重複添加同一引用。
btnNewButton.addActionListener(e -> {
// 1. 獲取左表選中行數據
int[] selected = leftTable.getSelectedRows();
DefaultTableModel rightModel = (DefaultTableModel) rightTable.getModel();
for (int idx : selected) {
Vector row = new Vector(); // 關鍵:新建行向量
for (int col = 0; col < leftTable.getColumnCount(); col++) {
row.add(leftTable.getValueAt(idx, col));
}
rightModel.addRow(row);
}
// 可選:從左表刪除(逆序刪除避免索引偏移)
for (int i = selected.length - 1; i >= 0; i--) {
((DefaultTableModel)leftTable.getModel()).removeRow(selected[i]);
}
});