【问题标题】:Override Jtable tab behavior go to next editable cell覆盖 Jtable 选项卡行为转到下一个可编辑单元格
【发布时间】: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 太棒了!我以为我正在走一条崎岖的道路。
  • 还有一个“模糊的”exampleexample - 它们展示了您试图实现的概念的“部分”,它们应用键绑定来启动编辑过程

标签: java swing jtable


【解决方案1】:

查看Table Tabbing 示例,它可以满足您的需求。

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

【讨论】:

    猜你喜欢
    • 2014-07-02
    • 1970-01-01
    • 2016-05-17
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多