添加 TableRowSorter 将值添加到模型后会导致 java.lang.IndexOutOfBoundsException:无效范围

2024-05-07

将 TableRowSorter 添加到表及其相应模型后,任何相应的添加(专门在 firetabletablerowsinserted 处)都会导致异常。从测试中可以清楚地看出,GetRowCount() 返回的值超出了模型范围。但是,在添加排序器或过滤器后如何继续向表中添加值对我来说没有意义?

例如,我在向表中添加任何内容之前设置行过滤器,然后在模型中使用以下调用向表中添加一个值:

this.addRow(row, createRow(trans,row));
this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());

rowcount 的大小为 1 并且抛出异常:

java.lang.IndexOutOfBoundsException: Invalid range
at javax.swing.DefaultRowSorter.checkAgainstModel(Unknown Source)
at javax.swing.DefaultRowSorter.rowsInserted(Unknown Source)
at com.gui.model

如果我执行相同的步骤而不首先添加排序器,一切都很好。我假设我可能需要通知模型排序器可能已进行更改并尝试了以下操作,但仍然返回异常:

this.addRow(row, createRow(trans,row));
this.fireTableStructureChanged()
this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());

我什至尝试在调用 fire 之前通知模型内的排序器,一个值已添加到模型中,如下所示,但它也失败了:

 this.addRow(row, createRow(trans,row));
 if(sorter.getRowFilter() != null){
      //if a sorter exists we are in add notify sorter
      sorter.rowsInserted(getRowCount(), getRowCount());
  }
  this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());

最后,我对 FireTableRowsInsterted(0,0) 进行了硬编码,它不会引发任何异常。但没有任何内容添加到表中?所以,我知道这肯定是某种类型的越界问题。 我查遍了一切,似乎找不到答案。如果有人知道这是如何工作的,那将会非常有帮助。 下面是在 jpanel 中设置排序器的代码:

    messageTable.setRowSorter(null);
     HttpTransactionTableModel m = getTransactionTableModel();
     final int statusIndex = m.getColIndex("status");
     RowFilter<Object,Object> startsWithAFilter = new RowFilter<Object,Object>() {
           public boolean include(Entry<? extends Object, ? extends Object> entry) {

               for(char responseCode:responseCodes)
               {
                   if (entry.getStringValue(statusIndex).startsWith(Character.toString(responseCode))) {
                         return true;
                       }
               }


             // None of the columns start with "a"; return false so that this
             // entry is not shown
             return false;
           }
         };


        m.sorter.setRowFilter(startsWithAFilter);
        messageTable.setRowSorter(m.sorter);

这是我的模型中为模型增加价值的代码:

public void update(Observable o, Object evt) {
    if (evt instanceof ObservableEvent<?>) {

        ObservableEvent<?> event = (ObservableEvent<?>) evt;

        if (event.getElement() instanceof HttpTransaction) {

            HttpTransaction trans = (HttpTransaction) event.getElement();

            // handle adding of an element
            if (event.getAction() == PUT) {

                if (includeTransaction(trans)) {

                    // handle request elements
                    if (trans.getRequest() != null && idMap.get(trans.getID()) == null) {

                        idMap.put(trans.getID(), count++);
                       // transactionManager.save(trans);
                        int row = idMap.get(trans.getID());
                        this.addRow(row, createRow(trans,row));
                        if(sorter.getRowFilter() != null){
                            sorter.rowsInserted(getRowCount(), getRowCount());
                        }
                        this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());

                    }

您有 1 分出局错误。触发事件的正确代码是:

this.fireTableRowsInserted(this.getRowCount()-1, this.getRowCount()-1);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加 TableRowSorter 将值添加到模型后会导致 java.lang.IndexOutOfBoundsException:无效范围 的相关文章

  • 在 JTable 中使用自定义 TablecellRenderer

    我是 Java 新手 我创建了一个JTable 就是这样addRow当我尝试向表中添加一行时 该方法有效 private void addTableRow String type String name String rank String
  • 如何管理一个 JInternalFrame 调用另一个 JInternalFrame?

    我有一个带有此代码的 JDesktopPane public class Menu extends JFrame implements ActionListener Creates new form Portada public stati
  • 将 Swing 集成到简单的文本冒险游戏中

    我对 Java 中的一些中级概念相当陌生 最近 我制作了一款名为 DazzleQuest 的文本冒险游戏 它完全在开发者控制台 终端中运行 它涉及到我的朋友作为角色 所以我想向他们展示它 并通过将命令行的功能和控制台的输出转移到一个简单的
  • TableModel setCellEditable 并自动将值设置回 false

    我目前正在尝试在 JTable 中实现 JPopupMenu 它允许解锁单元格以进行编辑 Override public void actionPerformed ActionEvent e if e getActionCommand Un
  • 如何暂停程序直到按下按钮?

    我使用从 jframe 扩展的类 它有一个按钮 我在程序中使用它 我希望当在我的程序中运行 jframe 时我的整个程序暂停 直到我按下按钮 我该怎么做 in c getch 做这个 我想要一个这样的功能 通过睡眠暂停执行 http dow
  • 在 Java 中重置 Graphics2D 对象

    我正在用 Java 尝试 Graphics2D 但像往常一样 我被困住了 P 问题是 假设我有这个代码 Graphics2D g Graphics2D this getGraphics Inside a JFrame g rotate Ma
  • 当相应的 JTextfield 为空时,如何填充 JTable 中的所有项目

    我正在 Java 项目中设计一个高级搜索选项sqlite在 NetBeans 中 有5种不同JTextfields和 5 列 我想填充JTable具有相应的匹配标准 如果一个JTextfield为空 那么它应该选择该列的所有项目 我使用的查
  • 更改 Swing 组件的首选大小

    我有一个摆动组件 该组件的理想尺寸将因内容而异当前正在显示 在本例中恰好是图像 我希望在内容更改时更改此首选大小 并且还允许更改布局 例如 如果在 JScrollPane 内使用组件 则滚动范围将更改以适应组件的大小 在 Swing 中执行
  • 如何控制 JTable 中的字体样式、颜色和大小?

    我有一个JTable在 Java Swing 中 我需要设置字体大小 颜色和样式 我怎样才能实现它JTable 为什么要在基本设置中设置TableRendererJTable http download oracle com javase
  • 如何在 JPasswordField 中启用剪切、复制?

    我注意到我无法剪切和复制JPasswordField 现在如何将密码的选定部分复制 剪切到剪贴板 有什么方法可以做到这一点吗 简单 用这个方法 JPasswordField jt new JPasswordField 20 Put clie
  • GridBagLayout:如何填充所有空白空间

    我有一个 JFrame 包含一些使用 gridBagLayout 3 行 一列 的 JPanel 这是我的代码 Container main container getContentPane GridBagLayout layout new
  • JOptionPane.showMessageDialog() 显示但没有任何消息?

    在下面的代码中 我在 try catch 块内调用 JOptionPane showMessageDialog 但是当错误被捕获时 我的 JOptionPane 可见 但没有任何消息 有人知道为什么以及如何解决这个问题吗 Regards M
  • Java中右键复制粘贴

    我正在使用 Netbeans 开发将在 Windows 中使用的应用程序 我注意到我无法右键单击进行复制或粘贴 我怎样才能启用此功能 我正在使用基本的 Swing 控件 例如 JText 和 JTextArea 为什么右键单击在java应用
  • Swing:有没有一种方法可以区分用户引起的 ItemEvent 和应用程序引起的 ItemEvent?

    我正在基于 Swing 的应用程序中使用组合框 并且很难弄清楚如何区分由用户事件生成的 ItemEvent 和由应用程序引起的 ItemEvent 例如 假设我有一个组合框 combo 并且我正在使用 ItemListener 监听 ite
  • 如何在 Java 中使 JFrame 可滚动?

    我有这段代码 我试图在其中安装可滚动面板 JPanel 但我不明白 这是我的代码 public class Sniffer GUI extends JFrame Canvas c new Canvas ConnectorProperties
  • Java KeyListener:按下两个键时如何执行操作?

    请看下面的代码 import java awt event import javax swing import java awt public class KeyCheck extends JFrame private JButton ch
  • 我应该在哪里以 Java MVC 模式调用我的 swingworker

    我有一个程序 其设置基本上与此 MVC 示例中的程序一样 http www leepoint net notes java GUI struct 40mvc html http www leepoint net notes java GUI
  • JTextArea没有滚动条

    private JPanel contentPane public Driver setDefaultCloseOperation JFrame EXIT ON CLOSE setBounds 100 100 867 502 content
  • Java Swing 应用程序消息对话框帮助

    我正在开发 Java Swing 应用程序 我需要创建一个如图所示的对话框 我不知道这个的名字 我无法解释 所以我附上一张照片 请告诉我这叫什么以及如何在我的 GUI 应用程序中创建它 给猫剥皮的方法不止一种 public final cl
  • JTree ConvertValueToText 返回在更改时被截断

    我有一个自定义树实现convertValueToText 此实现取决于某些全局状态 如果返回的字符串比先前返回的字符串更长 实际上我认为更宽 因为以像素为单位触发它 则文本将被截断并用 填充 当重绘是由 取消 选择元素或某个元素引起时 情况

随机推荐

  • 为什么是补码?

    我正在编写一个教程来教孩子们 9 至 13 岁 编程 我从计算机本身开始 它们与计算机科学没有太大关系 更多的是涉及解决计算问题的过程 以此为出发点 我引导他们认识到机器可以帮助我们解决某些计算问题 人们擅长抽象思维和想象力 但计算机非常擅
  • 如何使用 URL 将数据从 javascript 发送到 ASP.NET MVC 控制器

    我需要一些帮助 我使用 ASP NET MVC4 以及 JavaScript 和 Knockout 编写了一个小应用程序 但我无法将数据从 javascript 发送到 MVC 控制器 反之亦然 例如JS部分是这样的 JavaScript
  • 防止 Excel 公式中的单元格数量增加

    我在 Excel 中有一个公式 需要根据该行中的数字除以一个常数对该列的几行运行 当我复制该公式并将其应用于范围中的每个单元格时 所有单元格编号都会随行增加 包括常量 所以 B1 127 C4 IF B4 lt gt B4 B1 如果我复制
  • @EnableJpaRepositories 正在寻找哪个包?

    我正在学习如何构建 JSF 和 Spring 集成的 webapp 我使用java config来配置 问题是 EnableJpaRepositories 我应该在这个注解中放入哪个包 包中包含实体类吗 或者配置类 或者 我可以将我的根包放
  • 推送通知发送成功,但设备收不到(偶尔)

    从昨天开始 我一直遇到一些设备无法收到推送通知的问题 证书 设备令牌似乎是正确的 直到昨天 该设备才能成功接收推送通知 在服务器端 没有错误或连接拒绝 并且推送通知似乎每次都成功发送 但仍然有很多情况下设备无法正确接收推送 一些周边信息 我
  • 在 PHP 中删除 foreach 之后数组中的空字段

    我是 PHP 新手 这是我的 mailing php 中的代码 当用户提交请求时 有 5 7 个可选字段和 20 25 个字段最终未被选择 输出列出所有字段和值 无论它们是空的还是已被选择 我知道我需要使用unset or array fi
  • 在mongodb中编辑子文档N-N关系

    我有一个应用程序 其中article可以链接到多个平台 文章包含平台列表 平台也包含文章列表 有关更多详细信息 请查看我几个月前提出的 stackoverflow 问题 https stackoverflow com a 40377383
  • 对于基于 Play 2.0 的 Java 应用程序,我可以使用 groovy 模板代替 scala 吗?

    我是 Play 2 0 新手 我很难理解用于创建视图的 scala 模板 我可以切换回 groovy 因为它存在于早期版本的 Play 框架中 例如 播放 1 2 播放 1 2 4 是的 有一个可用于 groovy 的模块 https gi
  • AngularJS'无法读取未定义的'then'属性'

    我遇到这个问题 当我单击登录按钮时 chrome 控制台会记录以下内容 angular min js 117 TypeError 无法读取未定义的属性 then 在 m scope logIn loginModuleController j
  • 如何在 django ImageField 中验证图像格式

    我们的项目使用Python 2 7 PIL 1 1 7和Django 1 5 1 有一个 ImageField 适用于许多图像格式 包括 bmp gif ico pnm psd tif 和 pcx 但是要求仅允许 png 或 jpg 图像
  • 我们可以在比赛中重用后卫内部的中间变量吗?

    说我有方法foo as def foo i Int Option Int some code 现在我想在一个Seq of Int如下 Seq 1 2 map case int gt foo int collect case Some int
  • Weblogic:Java 8 迁移后 AppMerge 无法合并您的应用程序

    我们正在将 Java EE 应用程序从Java 6 to Java 8 这意味着编译级别和迁移JRE6 上的 Weblogic 11g to JRE8 上的 Weblogic 12c 当我尝试部署项目时 出现以下错误 lt 20 7 201
  • 使用 python 解析大型(20GB)文本文件 - 将 2 行读为 1

    我正在解析一个 20Gb 文件并将满足特定条件的行输出到另一个文件 但是有时 python 会一次读取 2 行并将它们连接起来 inputFileHandle open inputFileName r row 0 for line in i
  • 如何使用 .schema 文件在 sqlite3 中创建 DB 文件

    我们的客户向我们提供了一个名为db schema 现在有一个命令可以用来运行这个文件来创建一个 dbsqlite3 中的文件 我可以做到这一点而不必输入中提到的所有查询吗db schema file 请帮忙 谢谢 如果该文件仅包含格式正确的
  • 0、-0 和 +0 之间的差异[重复]

    这个问题在这里已经有答案了 我一直不明白为什么 0分别对待0 有趣的事实是0等于 0 gt 0 0 true 那么问题来了 为什么 0 分别对待 https stackoverflow com a 23368135 1420197 than
  • 根据聚合创建大小均匀的组

    可能是一个新手问题 但我希望根据数据库总大小将我们的服务器库存分成几个大小均匀的组 并且很难弄清楚如何对它们进行分组 我认为 NTILE 可能会起作用 但我就是无法将注意力集中在平均分配组上 我下面的示例只是随机订购服务器 我希望结果是大小
  • 在提供给 sklearn 管道中的分类器之前获取所选特征的名称和数量

    我在用sel SelectFromModel ExtraTreesClassifier 10 threshold mean 选择我的数据集中最重要的特征 然后我想将这些选定的特征提供给我的 keras 分类器 但是我的基于 keras 的神
  • 替换 Select 语句中的 NULL 和空字符串

    我有一个专栏可以有NULL或空白区域 即 值 我想用有效值替换这两个值 例如 UNKNOWN 我发现的各种解决方案建议修改表本身内的值 然而 在这种情况下 这不是一个选项 因为数据库用于开发和 或修补得非常差的第三方应用程序 实际上 我认为
  • R 中的 Tabulizer 包:如何在特定标题后抓取表格

    如何从 PDF 中抓取一些标题文本前面的表格 我正在尝试 tabulizer 包 这是从特定页面获取表格的示例 波兰语 公共卫生需求地图 library tabulizer library tidyverse options java pa
  • 添加 TableRowSorter 将值添加到模型后会导致 java.lang.IndexOutOfBoundsException:无效范围

    将 TableRowSorter 添加到表及其相应模型后 任何相应的添加 专门在 firetabletablerowsinserted 处 都会导致异常 从测试中可以清楚地看出 GetRowCount 返回的值超出了模型范围 但是 在添加排