当前位置: 首页 > 知识库问答 >
问题:

在Jtable on tab press中,将焦点从一个单元格转移到另一个单元格

晏昀
2023-03-14

总结:

在我的桌面应用程序中,我加载一个Jtable,当处于编辑模式时,如果我按选项卡,我需要将单元格的焦点放在下一个单元格上。

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

可能的解决方案我正在考虑的一个解决方案是获取我正在处理的单元格的索引,在全局变量中也是如此,然后按Tab键可以获取下一个单元格的索引,并将焦点设置在该单元格上。不知怎么的,它没有起作用。

请建议。

提前感谢...

共有2个答案

长孙承嗣
2023-03-14

通常制表符在获得焦点后在jTable中工作。如果您想通过按Tab键编辑下一个单元格,请在jTable的键释放事件中提供以下代码。

 if (evt.getKeyCode() == 9) {
            jTable1.editCellAt(nextRowIndex, nextColumnIndex);
    }
华煜祺
2023-03-14

在我脑海中,我想我们通过在tabes中的自定义按键实现了这一点

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

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

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

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

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

如果您找不到任何可编辑的单元格,您可能只想使用JTable.setRowSelectionInterval选择下一个可用的单元格

但这一切都归结为你想要实现什么。

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

 类似资料:
  • 问题内容: 摘要: 在我的桌面应用程序中,我加载了一个Jtable,并且在编辑模式下(如果我按Tab键)我需要将单元格的焦点放在下一个单元格上。 问题: 当我编辑单元格的值,然后按Tab时,焦点丢失。我在网上做了一些搜索,发现发生这种情况是因为在每个Tab上按下Jtable都会重新加载自身。 可能的解决 方案我想到的一个解决方案是获取正在使用的单元格的索引,将其与全局变量相同,然后在Tab键上按一

  • 让我介绍一下我的问题的场景。我希望在JTable中呈现数据库表的内容。使用这个JTable,我应该能够插入新行、删除行和更新现有行字段的内容。 第一个需要的行为是,当单元格获得焦点时,如果它是可编辑的,它直接进入编辑模式,如果它是字母数字内容,它的所有内容都被选中。(文字、数字、日期等) 下一个需要的行为是键作为键工作,即按键焦点必须向前(从左到右)或向后转移到下一个单元格(如果这是可编辑的,则进

  • 我的excel工作表中有两个单元格,其中一个单元格包含如下字符串: 而另一个单元格有欧元货币,例如: 现在我想复制这两个值,即“总额”和“223.463.687€”,并将其复制到第三个单元格中。我使用的公式是这样的: 我得到以下结果: 但是我应该: 注: 货币的格式是德语格式,意思是“.”(小数点)和“,”(昏迷)扮演相反的角色。在德语格式中,“,”是小数点,在英语中是“。”。

  • 我想要的是让第一个textField更靠近第一个jlabel,在第一个textField和第二个jlabel之间有一些空间,像这样: JLabel:JTEXTFIELD-----(spaceeee)-------JLabel:JTEXTFIELD 但我所改变的一切都不能接近我想要的,你看:

  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?

  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?