覆盖Jtable选项卡行为转到下一个可编辑单元格

时间:2014-11-18 23:29:37

标签: java swing jtable

这就是我想要的。我希望制表符转到下一个可编辑单元格并移动+选项卡转到上一个可编辑字段。我想我现在可能会从我发现的一些代码中走上一条可怕的道路。

现在,我正在扩展JTable并覆盖changeSelection方法。我正在查看当前事件并说"如果这是一个标签事件,请转到下一个可编辑字段"。这是有效的,除了用户当前正在编辑然后他们点击标签的情况。在这种情况下,HierarchyEvent发生(据我所知)没有迹象表明层次结构更改来自选项卡或鼠标单击,或其他。所以它默认移动到下一个单元格(通常是不可编辑的)。

以下是我目前正在做的事情

private final KeyStroke tabKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);

@Override
public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
{
    AWTEvent currentEvent = EventQueue.getCurrentEvent();
    if (currentEvent instanceof KeyEvent)
    {
        KeyEvent keyEvent = (KeyEvent) currentEvent;

        if (keyEvent.getSource() == this && KeyStroke.getKeyStrokeForEvent(keyEvent).equals(tabKeyStroke))
        {
            Row nextEditableCell = getNextEditableCell(rowIndex, columnIndex);
            if (nextEditableCell != null)
            {
                rowIndex = nextEditableCell.getRow();
                columnIndex = nextEditableCell.getColumn();
            }
        }
    }
    super.changeSelection(rowIndex, columnIndex, toggle, extend);
}

如何在选项卡上创建我的JTable,无论它当前是否正在编辑,转移到下一个可编辑单元格而不只是下一个单元格?

1 个答案:

答案 0 :(得分:0)

查看符合您需要的Table Tabbing示例。

基本概念是自定义JTable提供的默认选项卡Action,然后使用Key Bindings调用自定义Action。提供的类很容易重用默认的操作。