利用继承自 DefaultTableModel 的类 ServerTableModel 构造 JTable ,在 ServerTableModel中加入了操作模型的方法,运行结果正常,但是抛出异常如下:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 23 >= 3
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:632)
at javax.swing.JTable.getValueAt(JTable.java:2652)
at javax.swing.JTable.prepareRenderer(JTable.java:5666)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2067)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1969)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1765)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:758)
at javax.swing.JComponent.paint(JComponent.java:1022)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5104)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:285)
at javax.swing.RepaintManager.paint(RepaintManager.java:1132)
at javax.swing.JComponent._paintImmediately(JComponent.java:5052)
at javax.swing.JComponent.paintImmediately(JComponent.java:4862)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:727)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:683)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:663)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)并不是我自己写的代码抛出的异常,请问可能是哪里出了问题啊:-(

解决方案 »

  1.   

    占据有利地形--沙发
    呵呵舒舒服服地帮"rocket_11()"顶一下
      

  2.   

    用eclipse自己debug啊。看看数组什么时候越界了。在执行哪个方法的时候出现了23。哪个又是3
      

  3.   

    肯定是调用table的getValueAt(int row, int column) 方法时传入的参数超出了table实际的row或者column。
      

  4.   

    这个是Swing自己在绘制表格时报的错
    我也出现过,很难解决的
    你将表格的数据改变,然后fire事件通知swing; swing会在Thread中绘制.
    但是Swing是线程不安全的.这个错误很可能是因为你在不安全的地方操作了Table的数据.
      

  5.   

    感覺~~有點像windows的消息循環出了問題
      

  6.   

    我感觉你在用数据模型组织数据时,用了集合,而且是Vector,你查一下,程序中有没有地方是溢出的,比如,本来你的Vector中只有三个数据,而你却引用了第五个,这就是溢出,就会出这样的错误。