Java Vectors和JTable的问题

时间:2012-10-26 20:02:09

标签: java vector jtable classcastexception

我在Java中第一次使用JTables和Vectors,我遇到了一个有趣的障碍。我的代码编译正确,但是当我去运行它时,我得到以下异常:

  

线程“main”中的异常java.lang.ClassCastException:   java.lang.String无法强制转换为java.util.Vector

我没有看到我在哪里投,所以我有点困惑。

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表,但是当我尝试使用&lt;的Vector时,我遇到了相同类型的错误。 taskPanel&gt;这是扩展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);
    }
}

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

您需要在Vector使用Vectors

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

JTable table = new JTable(rowData, columnNames); 

对于多列Vector表模型,请参阅此example

答案 2 :(得分:0)

铸件是&lt;字符串&gt;。你现在不能拥有Vector Strings。看看this