JTable setRowSelectionInterval 对 JButton 没有影响

JTable setRowSelectionInterval has no effect for JButton

使用 JTable,我的 Table 模型 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 中。

谢谢!

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

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