2012-10-26 45 views
2

我在Java中第一次使用JTables和Vectors來修補,而且我碰到了一個有趣的障礙。我的代碼編譯正確,但是當我去運行它,我得到以下異常:在線程「主要」 java.lang.ClassCastExceptionJava的Vector和JTable的問題

例外: java.lang.String中不能轉換爲java.util中。傳染

我沒有看到我在哪裏鑄造,所以我有點困惑。

Vector<String> columnNames = new Vector<String>(); 
columnNames.add("Tasks"); 

Vector<String> testing = new Vector<String>(); 
testing.add("one"); 
testing.add("two"); 
testing.add("three"); 

table = new JTable(testing, columnNames); // Line where the error occurrs. 
scrollingArea = new JScrollPane(table); 

我的目標是有JPanels的表,但我有相同類型的錯誤,當我嘗試使用< taskPanel的矢量>下面是擴展JPanel類:

class taskPanel extends JPanel 
{ 
    JLabel repeat, command, timeout, useGD; 

    public taskPanel() 
    { 
     repeat = new JLabel("Repeat:"); 
     command = new JLabel("Command:"); 
     timeout = new JLabel("Timeout:"); 
     useGD = new JLabel("Update Google Docs:"); 

     add(repeat); 
     add(command); 
     add(timeout); 
     add(useGD); 
    } 
} 
+0

你能用堆棧跟蹤顯示完整的代碼和確切的異常嗎?我個人有疑問,這是你有問題行.. –

+0

這個問題的東西涉及到以下鏈接 [Vector示例] [1] [1]:HTTP://計算器問題1111745 /如何創建一個字符串向量的數組在java中 – sunleo

回答

2

您需要使用VectorsVector這裏:

Vector<Vector> rowData = new Vector<Vector>(); 
rowData.addElement(testing); 

JTable table = new JTable(rowData, columnNames); 

對於多列Vector表模型,看到這個example

+0

你可以有一個矢量>。你的問題是,當你需要一個二維結構時,你正在傳遞一維結構。 – Jay

+1

這不是問題。外部Vector的每個條目都是行數據。內部'Vector'中的每個條目都是列數據,可以根據需要具有儘可能多的列。 – Reimeus

+0

看起來像那些作品,謝謝一堆! –

0

鑄件是<字符串>。您目前無法使用Vector Strings。看看this

3

您的testing載體應該是vector of vectors,因爲每行應該包含所有列的數據,例如,

Vector<Vector> testing = new Vector<Vector>(); 
    Vector<String> rowOne = new Vector<String>(); 
    rowOne.add("one"); 
    Vector<String> rowTwo = new Vector<String>(); 
    rowTwo.add("two"); 
    Vector<String> rowThree = new Vector<String>(); 
    rowThree.add("three"); 

    testing.add(rowOne); 
    testing.add(rowTwo); 
    testing.add(rowThree); 

    table = new JTable(testing, columnNames); // should work now 
    scrollingArea = new JScrollPane(table); 
+0

另一個正確的答案,我只是希望我可以給兩個答案檢查... –