Object rowData[][] = {
{1, "", null, "", "", false, ""},
{2, "", null, "", "", false, ""},
{3, "", null, "", "", false, ""},
{4, "", null, "", "", false, ""},
{5, "", null, "", "", false, ""},
{6, "", null, "", "", false, ""}
};
DefaultTableModel model = new DefaultTableModel() {
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0:
return Integer.class;
case 1:
return String.class;
case 2:
return Integer.class;
case 3:
return String.class;
case 4:
return String.class;
case 5:
return Boolean.class;
case 6:
return String.class;
default:
return super.getColumnClass(columnIndex);
}
}
};
model.addColumn("Sr No.");
model.addColumn("Name");
model.addColumn("Age");
model.addColumn("Gender");
model.addColumn("City");
model.addColumn("isChild");
model.addColumn("Address");
model.addRow(rowData);
JTable table = new JTable(model);
table.setRowHeight(20);
table.setRowMargin(2);
table.getColumnModel().getColumn(0).setMaxWidth(50);
TableColumn childColumn = table.getColumnModel().getColumn(5);
JCheckBox childBox = new JCheckBox();
childColumn.setCellEditor(new DefaultCellEditor(childBox));
我已经编写了上面的代码来向用户显示一个表,而最后一列需要是一个复选框。所以我用Google搜索并在从许多来源中选择了一小部分之后找到了以下代码,但我得到的是以下异常:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
[Ljava.lang.Object; cannot be cast to java.lang.Boolean
当我在Boolean.class
中将String.class
更改为switch case
时,它没有显示任何异常,但我将行中的值设为java.lang.String
等
我不熟悉JFrame
,JTable
等。我无法确定我做错了什么。为什么ClassCastException
以及如何修复它?
答案 0 :(得分:1)
DefaultTableModel.addRow(Object[])
只能添加一行。但你要做的是添加多行。
迭代行并分别添加每个行。
将model.addRow(rowData);
替换为:
for (Object[] row : rowData) {
model.addRow(row);
}