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;
要点是不要假设选择了一行。在进行处理之前验证索引。
我有一个 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;
要点是不要假设选择了一行。在进行处理之前验证索引。