List<MyProduct> myProducts = getMyProducts();//create an arraylist;
Vector dataVector = new Vector(myProducts);
Vector columnVector = new Vector(myColNames); //Just a list of string headers
setDataVector(dataVector, columnVector);


setDataVector在DefaultTableModel中调用这段代码,并在突出显示的地方抛出classcast异常,这看起来像一个bug?当它试图将元素转换为向量时,这没有任何意义。

private void justifyRows(int from, int to) {
        // Sometimes the DefaultTableModel is subclassed
        // instead of the AbstractTableModel by mistake.
        // Set the number of rows for the case when getRowCount
        // is overridden.
        dataVector.setSize(getRowCount());

        for (int i = from; i < to; i++) {
            if (dataVector.elementAt(i) == null) {
                dataVector.setElementAt(new Vector(), i);
            }
            //java.lang.ClassCastException:
            ((Vector)dataVector.elementAt(i)).setSize(getColumnCount());
        }
    }

最佳答案

List<MyProduct> myProducts = getMyProducts(); //create an arraylist;
Vector dataVector = new Vector(myProducts);


这使得dataVector的向量MyProduct而不是向量的向量。我认为那是你的问题。

10-05 19:39