使用setRowSelectionInterval(int,int)后,无法通过箭头键导航JTable

时间:2011-02-01 04:34:06

标签: java swing focus jtable selection

我正在扩展JTable,我有一个populateData()方法,我用它来将数据加载到表模型中。在这个方法中,我正在使用:

setRowSelectionInterval(tableRow, tableRow);

它正如我所希望的那样工作,这是为了突出显示第一行。但是有一个问题:我无法通过向下箭头键将选择移动到下一行。我必须用鼠标点击任何行(甚至是突出显示的那一行)才能通过箭头键导航。

void populateData(Collection<Book> b) {
   myModel.populateData(b);
   if (myModel.getRowCount() > 0) {
      setRowSelectionInterval(0, 0);
   }
}

注意:我只启用行选择。列和单元格选择已禁用。

任何想法如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:2)

我猜测的焦点不在桌子上,所以它不会对按键做出反应。您可能需要添加:

table.requestFocusInWindow();

如果这不起作用,请尝试使用:

而不是setRowSelectionInterval(...)
table.changeSelection(0, 0, false, false);