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

Java 编辑JTable时向量类类型的更改,java,swing,vector,jtable,Java,Swing,Vector,Jtable,我有一个JTable,它有三列: 字符串,PropertyItem(自定义类),字符串 PropertyItem在表中显示为字符串,但类型为PropertyItem。以下是表格的一个示例行: 值掩码|格式约束|值掩码规则子类型 使用向量获取表的数据: List<Vector> displayedData = table_propertyDetails.getDataMatrix(); 现在,row.get(index)函数用于获取列0和列2的类型转换为字符串的列数据。对于Prope

我有一个JTable,它有三列:

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

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

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

使用向量获取表的数据:

List<Vector> displayedData = table_propertyDetails.getDataMatrix();
现在,row.get(index)函数用于获取列0和列2的类型转换为字符串的列数据。对于PropertyItem列,它作为(PropertyItem)row.get(index)完成。因此,目前情况良好,在正常的行列表/获取中不会出现任何问题

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

无法将java.lang.String转换为 com.abc.xyz.model.PropertyItem

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


你知道我可以在此时或在此之前如何将字符串转换回PropertyItem吗?

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

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

我试图理解解释,并根据我过去的错误编写答案

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

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

因为您正在第一列和第三列中添加一个
字符串
,它可以工作,但您正在第二列中添加
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];
    }
});

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

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

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

因为您正在第一列和第三列中添加一个
字符串
,它可以工作,但您正在第二列中添加
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];
    }
});

很抱歉没有回答或在你的答案上做标记。我的情况最终变得更加困难,通过更改代码中的逻辑得到了解决。无论如何,谢谢你的回答:)很抱歉没有回答或在你的答案上做标记。我的情况最终变得更加困难,通过更改代码中的逻辑得到了解决。无论如何,谢谢你的回答:)很抱歉没有回答或在你的答案上做标记。我的情况最终变得更加困难,通过更改代码中的逻辑得到了解决。无论如何,谢谢你的回答:)对不起,我没有实施你的解决方案,所以不确定它是否正确:|很抱歉没有回答或在你的答案上做标记。我的情况最终变得更加困难,通过更改代码中的逻辑得到了解决。无论如何,谢谢你的回答:)对不起,我没有实现你的解决方案,所以不确定它是否正确:|