这就是我想要的。我希望制表符转到下一个可编辑单元格并移动+选项卡转到上一个可编辑字段。我想我现在可能会从我发现的一些代码中走上一条可怕的道路。
现在,我正在扩展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,无论它当前是否正在编辑,转移到下一个可编辑单元格而不只是下一个单元格?
答案 0 :(得分:0)
查看符合您需要的Table Tabbing示例。
基本概念是自定义JTable提供的默认选项卡Action,然后使用Key Bindings调用自定义Action。提供的类很容易重用默认的操作。