这可能有一个微不足道的解决方案,但我在我的系绳的最后,所以我希望有人可以提供帮助.
我使用一个JTable,它有一个自定义渲染器和一组列的自定义编辑器.
渲染器使用JLabel组件,编辑器使用JSpinner组件.
我们的用户希望能够在列中输入值,然后按TAB或ENTER移动到表格中的下一个可编辑单元格.
如果我理解正确,这是JTable的默认行为.
但是,这对我来说似乎不正常.在用户单击单元格之前,仅显示JLabel.
只有当用户双击单元格时才会显示JSpinner(即CellEditor).因此,看起来单元格仅在MouseEvents上进入"编辑"模式,但在有焦点时则不然.
如果单元格有焦点,如何让单元格进入编辑模式?
Luh*_*har 20
谢谢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();
}
};
Run Code Online (Sandbox Code Playgroud)