【发布时间】:2014-11-18 23:29:37
【问题描述】:
这就是我想要的。我希望 tab 转到下一个可编辑单元格并 shift+tab 转到上一个可编辑字段。我想我现在可能从那里找到的一些代码走上了一条糟糕的道路。
现在,我正在扩展 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 在标签上(无论它当前是否正在编辑)切换到下一个可编辑单元格,而不仅仅是下一个单元格?
【问题讨论】:
-
键绑定,键绑定,键绑定! How to Use Key Bindings
-
@MadProgrammer 太棒了!我以为我正在走一条崎岖的道路。