jtable.setModel 给出 java.lang.ArrayIndexOutOfBoundsException: -1

jtable.setModel gives java.lang.ArrayIndexOutOfBoundsException: -1

我有一个 jbutton,它从数据库加载数据,然后填充一个 jtable(使用 DefaultTableModel)

然后,我在 table 的 selection 行有这个事件:

jTableDettagliFattura.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
                @Override
                public void valueChanged(ListSelectionEvent event) {
                    int selected= jTableDettagliFattura.getSelectedRow();
                    String id = jTableDettagliFattura.getModel().getValueAt(selected, 0).toString();
                    System.out.println(id);
                }
            });

当我第一次加载 table 时(使用按钮),一切正常。但是,如果我 select table 行之一,然后使用按钮重新加载 table,我会在命令“jTableDettagliFattura.setModel(型号);” (这是第一次完美的工作)。

可能是什么问题? selection 事件是否以某种方式“破坏”了我的模型?

But if I select one of the table rows, and then reload the table with the button, I get the "java.lang.ArrayIndexOutOfBoundsException: -1"

重新加载模型时没有选择行。侦听器可能会触发一个事件以指示选择已被删除。

尝试:

int selected = jTableDettagliFattura.getSelectedRow();

if (selected == -1) return;

要点是不要假设选择了一行。在进行处理之前验证索引。