我有时会得到这个例外.我真的不知道哪里有问题,我使用了abstracttablemodel的实现.我无法找到发生异常的精确位置,因为当我使用调试器并逐步运行异常时不会发生.
Exception occurred during event dispatching:
    java.lang.Arrayindexoutofboundsexception: 2 >= 2
    at java.util.Vector.elementAt(Vector.java:427)
    at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
    at javax.swing.plaf.basic.BasicTableuI.paintGrid(BasicTableuI.java:1931)
    at javax.swing.plaf.basic.BasicTableuI.paint(BasicTableuI.java:1767)
    at com.alee.laf.table.WebTableuI.paint(WebTableuI.java:52)
    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
    at javax.swing.JComponent.paintComponent(JComponent.java:752)
    at javax.swing.JComponent.paint(JComponent.java:1029)
    at javax.swing.JComponent.paintChildren(JComponent.java:862)
    at javax.swing.JComponent.paint(JComponent.java:1038)
    at javax.swing.JViewport.paint(JViewport.java:747)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
    at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1225)
    at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:786)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:694)
    at javax.swing.RepaintManager.access$700(RepaintManager.java:41)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1636)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:602)
    at java.awt.EventQueue$1.run(EventQueue.java:600)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
    at java.awt.EventdispatchThread.pumpOneEventForFilters(EventdispatchThread.java:269)
    at java.awt.EventdispatchThread.pumpEventsForFilter(EventdispatchThread.java:184)
    at java.awt.EventdispatchThread.pumpEventsForFilter(EventdispatchThread.java:178)
    at java.awt.Dialog$1.run(Dialog.java:1046)
    at java.awt.Dialog$3.run(Dialog.java:1098)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1096)
    at java.awt.Component.show(Component.java:1584)
    at java.awt.Component.setVisible(Component.java:1536)
    at java.awt.Window.setVisible(Window.java:842)
    at java.awt.Dialog.setVisible(Dialog.java:986)
    at ui.MainFrame.queryButtonActionPerformed(MainFrame.java:936)
    at ui.MainFrame.access$700(MainFrame.java:89)
    at ui.MainFrame$9.actionPerformed(MainFrame.java:538)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setpressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.Component.processMouseEvent(Component.java:6288)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6053)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4651)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.Lightweightdispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.Lightweightdispatcher.processMouseEvent(Container.java:4238)
    at java.awt.Lightweightdispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:602)
    at java.awt.EventQueue$1.run(EventQueue.java:600)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:616)
    at java.awt.EventQueue$2.run(EventQueue.java:614)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
    at java.awt.EventdispatchThread.pumpOneEventForFilters(EventdispatchThread.java:269)
    at java.awt.EventdispatchThread.pumpEventsForFilter(EventdispatchThread.java:184)
    at java.awt.EventdispatchThread.pumpEventsForHierarchy(EventdispatchThread.java:174)
    at java.awt.EventdispatchThread.pumpEvents(EventdispatchThread.java:169)
    at java.awt.EventdispatchThread.pumpEvents(EventdispatchThread.java:161)
    at java.awt.EventdispatchThread.run(EventdispatchThread.java:122)

我的桌子型号:

/*
 * To change this template,choose Tools | Templates
 * and open the template in the editor.
 */
package util;

import entity3.Document;
import entity3.Msg;
import entity3.Senderreceiver;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author work
 */
public class IncomingMailTableModel extends AbstractTableModel{
    public String[] getColumnNames() {
        return columnNames;
    }

    public void setColumnNames(String[] columnNames) {
        this.columnNames = columnNames;
    }
    private String[] columnNames = {"Дата","Тема","Відправник","Статус"};

    private List<Document> documents;

    public IncomingMailTableModel(List<Document> documents) {
        this.documents = documents;
    }

    @Override
    public int getRowCount() {
        return documents.size();
    }

    @Override
    public int getColumnCount() {
        return columnNames.length;
    }

    @Override
    public String getColumnName(int col) {
        return columnNames[col];
    }

    public Document getobjectAtRow(int row) {     
        return documents.get(row);  
    }
    @Override
    public Class getColumnClass(int column) {
        switch (column) {
            case 0:
                return String.class;
            case 1:
                return String.class; 
            case 2:
                return String.class;
            case 3:
                return String.class;

        }
        return null;
    }

    @Override
    public String getValueAt(int row,int column) {
        String toReturn = "";
        Document document = documents.get(row);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Msg msg =document.getMsg();
        ArrayList<Senderreceiver> senderReceivers = new ArrayList<Senderreceiver>(msg.getSenderreceivers());
        //ArrayList<Document> docs = new ArrayList<Document>(document.getMsg().getDocuments());
        switch (column) {
            case 0:
                if (document.getMsg().getReceivingDate() != null) 
                    toReturn = format.format(document.getMsg().getReceivingDate());

                break;
            case 1:
                toReturn = document.getTitle();

                break;

            case 2:
                for (Object o : senderReceivers) {
                    Senderreceiver senderReceiver = (Senderreceiver) o;
                    if (senderReceiver.getRole()==0) {
                        toReturn = senderReceiver.getorganization().getShortName();
                    }
                }
                break;
            case 3:
                if (document.getMsg().getIsRead()!=null)
                if(document.getMsg().getIsRead()) toReturn = "Прочитано";
                else toReturn="Непрочитано";
                break;
        }
        return toReturn;
    }
}

解决方法

如果要从Event dispatch线程以外的线程修改TableModel(或TableModel“所在的数据结构”),则可能会发生这种情况.

此错误的另一个常见原因是混合了视图和模型索引.例如,如果使用getSelectedRow()从JTable检索选定的行,则返回的值是基于视图的索引.如果您希望索引到相应的TableModel,则需要使用convertRowIndexToModel转换此值.

对于后一种情况,您可以尝试通过在不同列上对表进行排序,然后单击各行(特别是第一个和最后一个),或者在UI中执行“处理”该行所需的任何操作来复制此异常.

Java Swing:Jtable ArrayIndexOutOfBoundsException的更多相关文章

  1. Java Swing实现画板的简单操作

    这篇文章主要介绍了Java Swing实现画板的简单操作,修改颜色,更改图形,清除,任务栏按钮,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. Java Swing实现扫雷源码

    这篇文章主要为大家详细介绍了Java Swing实现扫雷源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Java+swing实现抖音上的表白程序详解

    这篇文章主要为大家详细介绍了如何利用Java swing实现抖音上的表白程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

  4. java swing GUI窗口美化方式

    这篇文章主要介绍了java swing GUI窗口美化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  5. IDEA的Swing可视化插件JFormDesigner详解

    JFormDesigner是一个专业的软件应用程序,专门用于帮助您开发Java Swing用户界面,而无需具备编程技能。它可作为独立实用程序使用,也可以将其用作各种IDE的插件,本文给大家介绍idea Swing可视化插件,感兴趣的朋友一起看看吧

  6. Java语言中Swing组件编程详解

    这篇文章主要为大家介绍了Java语言中Swing组件编程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  7. Java swing实现应用程序对数据库的访问问题

    这篇文章主要介绍了Java swing实现应用程序对数据库的访问,本次实验需要做一个GUI界面和一个连接查询功能,在论坛上借鉴了其他大佬获取网站内容的部分代码,然后自己做了一个及其简陋的swing界面,算是把这个实验完成了,需要的朋友可以参考下

  8. 在Java11中使用JscrollPane和JLayer时,Synthetica外观会引发类转换异常

    代码示例堆栈跟踪错误它在Java8中运行良好

  9. Windows 7外观上的Java Swing渲染错误?

    我应该报告吗?如果是这样,在哪里?谢谢!

  10. Windows 7触摸屏Java Swing =延迟的鼠标事件

    )是的,我试图简单地关闭触摸按住右键手势.不幸的是,这样做只是禁止绘制一个圆圈,指示你手指周围的右键手势和随后的右键点击.它不会消除潜在的问题:延迟鼠标下降事件长达六秒钟.我的问题:有没有办法:>理想情况下,向Windows指出我的应用程序是一个可触摸就绪的应用程序,因此它会立即发送事件?我可以看到,内置的软键盘正常工作,似乎.我只是希望我的Java应用程序也这样做.>完全禁用计算机上的延迟,但仍提供基本的触摸功能?

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部