【问题标题】:Trouble with Java's Vector's and JTableJava 的 Vector 和 JTable 的问题
【发布时间】:2012-10-27 05:12:42
【问题描述】:

我第一次在 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 表,但是当我尝试使用 的 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);
    }
}

【问题讨论】:

  • 你能用堆栈跟踪显示完整的代码和确切的异常吗?就我个人而言,我怀疑这是您遇到问题的线路..
  • 这个问题与以下链接有关 [Vector Example][1] [1]: stackoverflow.com/questions/1111745/…

标签: java vector jtable classcastexception


【解决方案1】:

您的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);

【讨论】:

    【解决方案2】:

    您需要在此处使用VectorVectors

    Vector<Vector> rowData = new Vector<Vector>();
    rowData.addElement(testing);
    
    JTable table = new JTable(rowData, columnNames); 
    

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

    【讨论】:

    • 你可以有一个 Vector>。您的问题是,当您需要二维结构时,您传递的是一维结构。
    • 这不是问题。外部Vector 的每个条目都是行数据。内部Vector 中的每个条目都是列数据,可以有任意多的列。
    • @reimeus 抱歉,我的评论措辞不当。 Reimeus 说的任何话我都没有异议。这里只是有一条关于 Vector 问题的评论,我想说您可以轻松地将 部分添加到 Reimeus 解决方案中,您只需要拥有 Vector>,不仅仅是 Vector.
    【解决方案3】:

    强制转换是 。你现在不能有向量字符串。看看this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 2013-01-01
      • 1970-01-01
      相关资源
      最近更新 更多