2015-06-17 127 views
2

我尝试使用矢量填充JTable时出现以下错误。向量填充JTable?

错误:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Vector 
    at javax.swing.table.DefaultTableModel.justifyRows(DefaultTableModel.java:268) 
    at javax.swing.table.DefaultTableModel.setDataVector(DefaultTableModel.java:224) 
    at javax.swing.table.DefaultTableModel.<init>(DefaultTableModel.java:159) 
    at Package_Sync.Package_sync$Model.<init>(Package_sync.java:50) 
    at Package_Sync.Package_sync.packageTable(Package_sync.java:43) 
    at Package_Sync.Package_sync.<init>(Package_sync.java:16) 
    at Package_Sync.Package_sync$2.run(Package_sync.java:116) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

这里是我的代码:

private void packageTable() { 
    Vector tableHeadings = new Vector(); 
    tableHeadings.add("PACKAGE NAMES"); 
    tableHeadings.add("SHOW"); 
    Table1.setModel(new Model(fileVector, tableHeadings)); 
} 

class Model extends DefaultTableModel { 
    Vector heading = null; 
    Model(Vector data, Vector heading) { 
     super(data, heading); 
     this.heading = heading; 
    } 

    public Class getColumnClass(int cols) { 
     if (getValueAt(0, cols) != null && cols > 0) { 
      return getValueAt(0, cols).getClass(); 
     } else { 
      return String.class; 
     } 
    } 
} 

什么是我的代码的问题?

+1

请提供完整的堆栈跟踪 – Alexander

+1

你不显示在您创建“fileVector”,所以我猜码incorre克拉。 – camickr

+1

如果我记得正确,你必须使用一个对象的向量。请参阅表格上的javadoc文档。很长,但它会帮助你Thiruanvukkarasu! https://docs.oracle.com/javase/tutorial/uiswing/components/table.html – Victor

回答

0

从例外,必须添加字符串对象fileVector,像这样:

Vector fileVector = new Vector(); 
fileVector.add("a string object"); 

这是对的DefaultTableModel的实施,使用它,你需要添加矢量对象到fileVector,像这样:

Vector fileVector = new Vector(); 
fileVector.add(new Vector(Arrays.asList(new String[]{"row1 col1", "row1 col2"}))); 
fileVector.add(new Vector(Arrays.asList(new String[]{"row2 col1", "row2 col2"}))); 

干杯