2

我第一次在 Java 中修改 JTables 和 Vectors,并且遇到了一个有趣的问题。我的代码编译正确,但是当我运行它时,出现以下异常:

线程“主”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);

我的目标是有一个 JPanel 表,但是当我尝试使用 <taskPanel> 的 Vector 时出现相同类型的错误这是扩展 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);
    }
}
4

3 回答 3

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);
于 2012-10-26T20:10:06.407 回答
2

你需要在这里使用Vector一个Vectors

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

JTable table = new JTable(rowData, columnNames); 

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

于 2012-10-26T20:10:20.533 回答
0

强制转换是 <String>。你现在不能有向量字符串。看看这个

于 2012-10-26T20:06:50.953 回答