JTable setRowSelectionInterval对JButton没有影响

时间:2015-02-09 22:23:58

标签: java swing jtable selection

使用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中。

谢谢!

1 个答案:

答案 0 :(得分:4)

也许您可以使用Table Cell Listener来监听对表格的修改。它监听JTable编辑器所做的实际更改。

然后在提供的Action中,您可以选择适当的行。您可能需要将Action代码包装在SwingUtilities.invokeLater(...)中,以确保在表完成编辑后执行代码。