当前位置: 首页 > 知识库问答 >
问题:

从Jtable中删除行时出错

齐运诚
2023-03-14

我的Jtable有一个listSelectionListener:

jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

        @Override
        public void valueChanged(ListSelectionEvent e) {
            System.out.println(jTable1.getValueAt(jTable1.getSelectedRow(), 0));
        }
    });

我创建了一个按钮来删除带有事件的Jtable的所有行:

for (int i =jTable1.getModel().getRowCount()-1; i >=0 ; i--) {
        ((DefaultTableModel)jTable1.getModel()).removeRow(i);
    }

如果我在没有选择任何行的情况下按下按钮,则不会出现错误,但当我选择一行,然后按下按钮时,会出现以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1

当表没有ListSseltionListener时,不会发生这种情况。我哪里错了?

提前感谢您的帮助。

共有2个答案

狄旭
2023-03-14

当表没有ListSelectionListener时,不会发生这种情况

所以我猜删除表中所有行的代码会执行。删除行后,行选择必须更改,因为不再有任何行可供选择。

System.out.println(jTable1.getValueAt(jTable1.getSelectedRow(), 0));

然后执行上面的语句,getSelectedRow()方法返回-1,导致异常。尝试:

int selectedRow = jTable1.getSelectedRow();
System.out.println("Selected Row: " + selectedRow;

if (selectedRow != -1)
    System.out.println(jTable1.getValueAt(selectedRow, 0));
毋宪
2023-03-14

你能试试这个吗?

DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
dtm.setRowCount(0);
 类似资料:
  • 我不确定是什么导致了这个例外。

  • 我有一个框架,里面有一张桌子和两个按钮。 1) 重复行2)删除行 表a在第三列中的组合 我有一个场景,我复制空白行并点击最后一排的组合框来选择该行,然后单击删除行按钮…然后在删除后,每当我尝试单击任何单元格时,它都会给我以下错误。 下面是相关框架的源代码。

  • 我正在用java创建一个没有数据库的库系统程序。(直接使用文件)。 我在删除jtable中的一行时遇到了一个奇怪的问题(也就是从文件中删除)。 有时当我在表格中选择一行并单击删除按钮时,不止一行被删除了! 大多数时候它也能正常工作!! 我的代码: 我的模型类: 用户信息类别: 我的文本文件:

  • 问题内容: 我需要删除JTable中的所有行。 我已经尝试了以下两种方法: 和 两者都不会删除所有行。有任何想法吗? 问题答案: 以下代码为我工作:

  • 我正在使用ListSelectionListener从所选行更新我的JTextField(countryTxt)。 但是,当我选择一行并单击按钮时,它会弹出一个异常。当我没有在表格中选择一行并单击按钮时,一切正常。显然,我可以在未触发事件时删除一行。因此,我的问题是:如何在触发事件后删除一行。提前谢谢。

  • 我想从java中的表中删除选定的行。该事件应在单击按钮时执行。如果有人帮助我,我会非常感激。。。 例如,有一个名为sub\U table的表,有3列,即sub\U id、sub\U name、class。当我从该表中选择一行并单击“删除”按钮时,应删除该特定行。。