这可能有一个简单的解决方案,但我已经筋疲力尽了,所以我希望有人能帮忙。
我使用一个 JTable,它有一个自定义渲染器和一个用于一组列的自定义编辑器。
渲染器使用 JLabel 组件,编辑器使用 JSpinner 组件。
我们的用户希望能够在列中输入值,然后按 TAB 或 ENTER 移动到表中的下一个可编辑单元格。
如果我理解正确的话,这是 JTable 的默认行为。
但是,这对我来说似乎无法正常工作。在用户单击单元格之前,只会显示 JLabel。
JSpinner(即 CellEditor)仅在用户双击单元格时显示。因此,看起来单元格仅在 MouseEvents 上进入“编辑”模式,而不是在它具有焦点时。
如何让单元格在获得焦点后立即进入编辑模式?
最佳答案
谢谢 n00213f。您帖子中的主题和示例很有帮助。通过在线程中重载 JTable 中的 changeSelection 方法,JTable 会在每次更改选择时检查单元格是否可编辑。如果单元格是可编辑的,它将显示 CellEditor 并将焦点转移到编辑器组件。
为了完整起见,这是我的解决方案:
JTable myTable = new javax.swing.JTable()
{
public void changeSelection(final int row, final int column, boolean toggle, boolean extend)
{
super.changeSelection(row, column, toggle, extend);
myTable.editCellAt(row, column);
myTable.transferFocus();
}
};
关于java - JTable - 按 Tab 键让单元格进入编辑模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3013165/