使用setRowSelectionInterval()和setColumnSelectionInterval(),我的表模型setValueAt()方法在某些情况下将选择移动到下一行。当它从(默认)单元格编辑器中调用时(通过用户在单元格中打字并点击标签),代码将工作:选择所需的下一个单元格(下一行中的第一个单元格)。JTable setRowSelectionInterval对JButton没有影响
但是,如果用户使用Return而不是Tab来提交编辑,则选择不会发生;而是选择下面的单元格。这对我来说没问题。
我也有一个JButton来清除一行。按钮的动作函数调用模型的setValueAt()函数以获取所需的单元格。不幸的是,setRowSelectionInterval()和setColumnSelectionInterval()方法没有明显的效果;相反,没有选择单元格。我试过table.requestFocusInWindow()和table.getParent()。requestFocusInWindow(),以及table.changeSelection(row,0,false,false),所有没有明显的影响。
在我去建造SSCCE的麻烦之前,我有什么基本的东西在这里失踪?
在如此重要的情况下,这里的容器层次:
parent JPanel
button rows JPanel
button row 1 JPanel
button row 2 JPanel
table JScrollpane
JTable
有问题的按钮在按钮行1
谢谢!
如果这是我的问题,我需要帮助,我会创建并发布[最小示例程序,mcve](http://stackoverflow.com/help/mcve),并希望通过提供最小的程序演示了这个问题,有人可以找出解决方案。 – 2015-02-09 22:27:21
'在我去建造SSCCE的麻烦之前?'建立一个SSCCE并不麻烦。这是一个解决问题的工具,您应该始终创建,以确保您了解问题。顺便说一句,TableModel不应该改变表的选择,所以你不应该重写setValueAt()方法。 TableModel只是管理数据,View处理选择。 – camickr 2015-02-09 22:38:32
您似乎可以唤起''selectNextRow''行动,就像[这里](http://stackoverflow.com/a/20413603/230513)针对滚动动作所建议的那样。 – trashgod 2015-02-09 22:39:41