【问题标题】:Shifting the focus from one cell to another in Jtable on tab press在标签按下时将焦点从 Jtable 中的一个单元格转移到另一个单元格
【发布时间】:2012-07-26 09:37:50
【问题描述】:

总结:

在我的桌面应用程序中,我加载了一个 Jtable,在编辑模式下,如果我按下 Tab,我需要将单元格的焦点移到下一个单元格上。

问题: 当我编辑单元格的值,然后当我按 Tab 时,焦点会丢失。我在网上做了一些搜索,我发现它发生是因为在每个 Tab 按下 Jtable 都会自行重新加载。

可能的解决方案 我正在考虑的一个解决方案是获取我正在工作的单元格的索引,在全局变量中相同,然后按 Tab 键我可以获得下一个单元格的索引并将焦点设置在该单元格上。 不知何故,它不起作用。

请提出建议。

提前谢谢..

【问题讨论】:

  • +1 用于构建您的问题 :-) 虽然我不太明白:focus 下一个单元格到底是什么意思?接下来开始编辑?类似于 focus is lost - 来自哪个组件? 在每个选项卡上按 Jtable 会自行重新加载 不,这不是默认行为。最好编写一个 SSCCE 来演示您的问题,这样简单的语言误解就不会成为解决方案的方式:-)

标签: java swing jtable


【解决方案1】:

在我的脑海中,我认为我们通过在标签 InputMapActionMap 中的自定义 keystroke 实现克服了这个问题。

我们使用的实现允许我们执行“连续”编辑,即当用户按下回车键或制表符时,我们移动到下一个可编辑单元格并开始编辑

InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
ActionMap am = table.getActionMap();

KeyStroke tabKey = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);

Action moveNextCellAction = am.get(im.get(tabKey));

ContinousEditAction continousEditAction = new ContinousEditAction(table, moveNextCellAction);

im.put(tabKey, "Action.tab");

am.put("Action.tab", continousEditAction);

ContinousEditAction 负责查找下一个可编辑单元格。基本上当触发动作时,您通过JTable.getEditingRow & JTable.getEditingColumn 方法来评估当前单元格(您还想通过JTable.isEditing 检查表格是否处于编辑模式,否则您需要使用JTable.getSelectedRow & @ 987654330@ - 事实上,你可能会侥幸成功,但这就是我解决问题的方式。

从那里,您想要遍历单元格,直到找到可编辑的单元格。

基本上,您要检查到当前行的末尾,然后移动到下一行,直到不再存在行为止,根据您要执行的操作,您可以选择循环回到表的开头(单元格 0x0) 并步行直到到达当前位置。

小心,如果你不小心,你可能会陷入连续循环:P。

如果您没有找到任何可编辑的单元格,您可能只是希望使用JTable.setRowSelectionIntervalJTable.setRowSelectionInterval 选择下一个可用的单元格,否则您可以调用JTable.editCellAt(nextRow, nextCol)

但这一切都归结为您想要实现的目标。

此外,您可以将相同的想法应用于回车键;)

【讨论】:

    【解决方案2】:

    通常tab一旦获得焦点就在jTable中工作。如果你想通过按Tab键编辑下一个单元格,在jTable的按键释放事件中给出以下代码。

     if (evt.getKeyCode() == 9) {
                jTable1.editCellAt(nextRowIndex, nextColumnIndex);
        }
    

    【讨论】:

      猜你喜欢
      • 2016-10-27
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      相关资源
      最近更新 更多