Java Can';t使用setRowSelectionInterval(int,int)后,通过箭头键导航JTable

Java Can';t使用setRowSelectionInterval(int,int)后,通过箭头键导航JTable,java,swing,focus,jtable,selection,Java,Swing,Focus,Jtable,Selection,我在扩展JTable,我有一个populateData()方法,用于将数据加载到表模型中。在这个方法中,我使用: setRowSelectionInterval(tableRow, tableRow); 它按照我的要求工作,也就是突出显示第一行。但有一个问题:我无法通过向下箭头键将所选内容移动到下一行。我必须用鼠标点击任何一行(甚至是突出显示的那一行),才能通过箭头键导航 void populateData(Collection<Book> b) { myModel.popu

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

setRowSelectionInterval(tableRow, tableRow);
它按照我的要求工作,也就是突出显示第一行。但有一个问题:我无法通过向下箭头键将所选内容移动到下一行。我必须用鼠标点击任何一行(甚至是突出显示的那一行),才能通过箭头键导航

void populateData(Collection<Book> b) {
   myModel.populateData(b);
   if (myModel.getRowCount() > 0) {
      setRowSelectionInterval(0, 0);
   }
}
void populateData(集合b){
myModel.populateData(b);
如果(myModel.getRowCount()>0){
setRowSelectionInterval(0,0);
}
}
注意:我只启用行选择。列和单元格选择被禁用

有没有办法解决这个问题


提前谢谢。

我想我不会把注意力集中在桌子上,这样它就不会对按键做出反应。您可能需要添加:

table.requestFocusInWindow();
如果这不起作用,请尝试使用以下方法代替setRowSelectionInterval(…):

table.changeSelection(0, 0, false, false);

是的,我也认为这是一个焦点问题,我以前试过要求焦点,但没有成功。changeSelection也不起作用,它只是突出显示了行(与setRowSelectionInterval相同)。谢谢您的回复。@Mota,只能请求关注显示在可见GUI上的组件。您的问题没有说明代码何时执行。发布你的SSCCE(),说明问题在于你需要更多的帮助。现在它与requestFocusInWindow一起工作。在我从表本身请求焦点之前,这不起作用,现在当我从帧请求焦点时,它起作用。非常感谢你。