当我在jtable中选择行时,它总是返回-1
作为表行索引。
这就是我将数据填充到jtable的方式:
private void addResultToRecTable(DefaultTableModel dtm, ArrayList<RecipeModule> al) {
if (al != null) {
int rowCount = dtm.getRowCount();
for (int i = 0; i < rowCount; i++) {
dtm.removeRow(0);
}
for (int i = 0; i < al.size(); i++) {
String[] recArray = {al.get(i).getRecID(), al.get(i).getRecName(), al.get(i).getRecCategory(), al.get(i).getRecQty(), al.get(i).getRecUnit()};
dtm.addRow(recArray);
}
}
这是我将数据传递给addResultToRecTable()
方法的方法:
ArrayList<RecipeModule> al = RecipeController.searchRecipes(txtRepSearchName.getText(), txtRecSearchCate.getText());
addResultToRecTable(recDefaultTableModel, al);
将数据填入表格后。我在表格中选择了一行并打印出选定的行索引。然后我收到了这个错误。
private void tableRecSearchKeyReleased(java.awt.event.KeyEvent evt) {
try{
int selectedRow = tableRecIngredients.getSelectedRow();
System.out.println(selectedRow);
}
但是我收到了这个错误:
java.lang.ArrayIndexOutOfBoundsException: -1
我不确定问题是什么。有什么建议吗?
答案 0 :(得分:4)
private void tableRecSearchKeyReleased(java.awt.event.KeyEvent evt)
我不知道那件事是什么。也许行选择还没有完成。
如果您想知道行选择何时发生变化,请在表格中添加ListSelectionListener
。
table.getSelectionModel().addListSelectionListener(...);
阅读How to Write a List Selection Listener上Swing教程中的部分,了解更多信息和示例。
//int rowCount = dtm.getRowCount();
//for (int i = 0; i < rowCount; i++) {
// dtm.removeRow(0);
//}
要从表模型中删除所有行,您只需使用:
dtm.setRowCount(0);