JTable - 按Tab键使单元格进入编辑模式

Luh*_*har 9 java swing jtable

这可能有一个微不足道的解决方案,但我在我的系绳的最后,所以我希望有人可以提供帮助.

我使用一个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)


n00*_*13f 5

您可以以编程方式实现此目的,只需在单元格上进行焦点事件,在焦点和编辑允许的情况下,开始编辑.

更多关于这个线程例子