2013-11-16 2 views
0
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 где подсвечивается, который выглядит как ошибка? Поскольку он пытается передать элемент в вектор, что не имеет смысла.DefaultTabelModel исключения литой классы при расширении

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()); 
     } 
    } 
+0

Stacktrace Пожалуйста, обратите внимание, что вы не должны использовать необработанный тип. –

+0

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

ответ

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

Это делает dataVector вектора MyProduct не вектор вектора. Думаю, это твоя проблема.

+0

конструктор docs говорит: «Создает вектор, содержащий элементы указанной коллекции, в том порядке, в котором они возвращаются итератором коллекции». – NimChimpsky

+0

мой плохой, но это все еще ваша проблема, элементы имеют тип 'MyProduct', а не' Vector'. –

1
java.lang.ClassCastException: 
    ((Vector)dataVector.elementAt(i)).setSize(getColumnCount()); 

setDataVector(Vector dataVector, Vector columnIdentifiers): На самом деле ожидает Vector, содержащий один или несколько Vector: представление таблицы данных rows. Вы лучше поймете, если вы сравните с другой функцией setDataVector(Object[][] dataVector, Object[] columnIdentifiers).

После возвращения ваших ArrayList myProducts, добавьте это создать Vector например, prodVect, содержащие элементы списка и добавить вектор в другую Vector:

List<MyProduct> myProducts = getMyProducts();//create an arraylist; 
Vector prodVector = new Vector(myProducts); 
Vector dataVector = new Vector(); 
dataVector.add(prodVector); 
setDataVector(dataVector, columnVector); 

Но вместо зависимости от setDataVector функции, я думаю, что вы может использовать model.addRow(prodVector), где prodVector - это Vector, как определено выше. Другим является функция model.addRow(Object[]), о которой вы могли бы знать и предпочтительнее, используя функцию с параметром Vector.

 Смежные вопросы

  • Нет связанных вопросов^_^