gpt4 book ai didi

java - 在按 Tab 键时将焦点从 Jtable 中的一个单元格转移到另一个单元格

转载 作者:行者123 更新时间:2023-12-03 02:27:25 26 4
gpt4 key购买 nike

摘要:

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

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

可能的解决方案我想到的一个解决方案是获取我正在使用的单元格的索引,将其放在全局变量中,然后按 Tab 键我可以获得下一个单元格的索引并将焦点设置在该单元格上。不知怎的,它不起作用。

请提出建议。

提前致谢..

最佳答案

我突然想到,我认为我们通过自定义 keystroke 克服了这个问题。 tabes 中的实现 InputMap & ActionMap .

我们使用的实现允许我们执行“连续”编辑,也就是说,当用户按下 Enter 或 Tab 时,我们移动到下一个可编辑单元格并开始编辑

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.getSelectedRowJTable.getSelectedColumn - 事实上,您可能会这样做,但这就是我解决问题的方式)。

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

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

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

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

但这一切都取决于您想要实现的目标。

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

关于java - 在按 Tab 键时将焦点从 Jtable 中的一个单元格转移到另一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11666489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com