2013-10-29 99 views
0

Vector類類型的變化我有一個JTable其中有三列:上編輯的JTable

字符串,PropertyItem(自定義類),字符串

PropertyItem是顯示如表中的字符串,但類型PropertyItem。以下是表格的示例行:

Value Mask |格式約束|值屏蔽規則子類型

表的數據是獲取使用Vector:

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

和穿越這樣的表中的數據:

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

現在,row.get(指數)函數用於在列0和列2中使用類型轉換爲字符串獲取列數據。對於PropertyItem列,它按照(PropertyItem)row.get(index)完成。所以,很多東西都很好,並且在正常的列表/讀取行時不會出現問題。

現在,當該表的第二列(PropertyItem)被編輯時,它變成一個字符串和(PropertyItem)row.get(指數)在該行的錯誤返回:

java.lang中。字符串不能轉換爲 com.abc.xyz.model.PropertyItem

對於該數據不編輯所有其他行,這個轉換是沒有任何錯誤完成,但與編輯的行,它會導致這個錯誤。

任何想法我可以在這裏做什麼來將字符串轉換回PropertyItem在這個時候或這個時間之前?

回答

3

似乎,您使用DefaultTableModel,在這種情況下,我建議您編寫自己的TableCellEditor來編輯您的自定義列。在你的實現中,你可以根據需要編輯你的對象。

+0

對不起,不回答或你的答案標記。我的情況變得更加困難,並通過更改代碼中的邏輯來解決。感謝您的回答:) –

1

我試着理解解釋和寫回答WRT我過去的錯誤。

我認爲你需要檢查你的JTableTableModel,其數據類型而創建JTable要設置。

如果您對所有三列使用String而不是將其更改爲Object作爲第二列。

因爲你在第一和第三列,將工作添加String,但要在第二塔中加入的PropertyItem對象和第二列的數據類型可以是String這個將被轉換爲Stringget()方法將返回字符串從表和該Casting錯誤會發生。

我希望在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]; 
    } 
}); 
+0

對不起,不答覆或標記在您的答案。我的情況變得更加困難,並通過更改代碼中的邏輯來解決。謝謝你的回答:) –

+0

@FarhanHafeez它好吧...我不介意你現在要標記:p –

+0

對不起,我沒有實現你的解決方案,所以不知道它是否正確: –