使用JTable,我的表模型setValueAt()方法在某些情况下使用setRowSelectionInterval()和setColumnSelectionInterval()将选择移动到下一行。当从(默认)单元格编辑器调用时(通过用户键入单元格并点击选项卡),代码可以正常工作:选择所需的下一个单元格(下一行中的第一个单元格)。
但是,如果用户使用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中。
谢谢!
答案 0 :(得分:4)
也许您可以使用Table Cell Listener来监听对表格的修改。它监听JTable编辑器所做的实际更改。
然后在提供的Action
中,您可以选择适当的行。您可能需要将Action代码包装在SwingUtilities.invokeLater(...)
中,以确保在表完成编辑后执行代码。