如何将行数据从1 JTable移动到另一个?

时间:2016-06-01 04:54:04

标签: java swing jtable classcastexception

我试图通过设置表的模型将行数据从一个表移动到另一个表。

当我尝试addRow() DefaultTableModel

时,我收到以下错误
java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object;

应该是Vector还是Object?我真的需要施展吗?

这是我的代码。

int selectedRowIndex = subjectsListJtbl.getSelectedRow();
int selectedColIndex = subjectsListJtbl.getSelectedColumn();
DefaultTableModel curriculumSubjectsModel = (DefaultTableModel)curriculumSubjectsJtbl.getModel();
curriculumSubjectsModel.addRow((Object[])subjectsListJtbl.getValueAt(selectedRowIndex, selectedColIndex));
curriculumSubjectsJtbl.setModel(curriculumSubjectsModel);

另外,您是否可以提供一些提示,说明如何避免将行数据从一个表复制到另一个表?

2 个答案:

答案 0 :(得分:2)

通过查看您的代码和您得到的错误,这似乎是错误的原因。

curriculumSubjectsModel.addRow((Object[])subjectsListJtbl.getValueAt(selectedRowIndex, selectedColIndex));

在这里,您从表中的单元格中获取值并将其转换为Object数组。无法将String对象或任何其他对象强制转换为数组对象。因此,要解决此问题,您可以创建具有所需值的Object数组,并将其传递给addRow()方法。

curriculumSubjectsModel.addRow(new Object[]{subjectsListJtbl.getValueAt(selectedRowIndex, selectedColIndex)});

答案 1 :(得分:1)

您需要添加为数组

更改为

curriculumSubjectsModel.addRow((Object[])
    {subjectsListJtbl.getValueAt(selectedRowIndex, selectedColIndex)});

或者当你暗示你可以创建一个矢量并添加它。