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 完全完成编辑后执行。
使用 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 完全完成编辑后执行。