有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

编辑JTable时java向量类类型的更改

我有一个JTable,它有三列:

字符串,PropertyItem(自定义类),字符串

PropertyItem在表中显示为字符串,但类型为PropertyItem。以下是表格的示例行:

值掩码|格式约束|值掩码规则子类型

使用向量获取表的数据:

List<Vector> displayedData = table_propertyDetails.getDataMatrix();

并像这样遍历表数据:

for(Vector row : displayedData) { ... }

现在,划船。get(index)函数用于获取列0和列2的类型转换为字符串的列数据。对于PropertyItem列,它作为(PropertyItem)行完成。获取(索引)。因此,目前情况良好,在正常的行列表/获取中不会出现问题

现在,当编辑此表的第二列(PropertyItem)时,它将变成一个字符串和(PropertyItem)行。get(index)返回该行的错误信息:

java.lang.String cannot be cast to com.abc.xyz.model.PropertyItem

对于未编辑数据的所有其他行,此转换是在没有任何错误的情况下完成的,但对于已编辑的行,它会导致此错误

你知道我现在或之前可以做些什么来将字符串转换回PropertyItem吗


共 (2) 个答案

  1. # 1 楼答案

    似乎,您使用了DefaultTableModel,在这种情况下,我建议您编写自己的TableCellEditor来编辑自定义列。在实现中,您可以根据需要编辑对象

  2. # 2 楼答案

    我试图理解解释,并写下与我过去错误相反的答案

    我认为您需要查看TableModelJTable,您在创建JTable时正在设置哪个数据类型

    如果对所有三列都使用String,则将第二列的值更改为Object

    因为您正在第一列和第三列中添加String,所以它可以工作,但您正在第二列中添加PropertyItem的对象,第二列的数据类型可能是String,这将转换为String,并且get()方法将从表中返回一个字符串,并且将发生转换错误

    我希望,更改TableModel中第二列的类型将解决这个问题

    示例:

    myTable.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {null, null, null},
            {null, null, null},
            {null, null, null},
            {null, null, null}
        },
        new String [] {
            "Column 1", "Column 2", "Column 3"
        }
        ) {
        Class[] types = new Class [] {
            java.lang.String.class, java.lang.Object.class, java.lang.String.class
        };
    
        public Class getColumnClass(int columnIndex) {
            return types [columnIndex];
        }
    });