栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

我想起来了,我认为我们可以

keystroke
通过Tabs
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.getSelectedRow
JTable.getSelectedColumn
-实际上,您可能只是这样做而已,但是这就是我解决问题的方式)。

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

基本上,您要检查到当前行的末尾,然后移至下一行直到不存在更多行,这取决于您要执行的操作,您可以选择循环回到表的开头(单元格0x0)并步行直到到达当前位置。

注意,如果不注意:P,您可能会陷入连续循环。

如果找不到任何可编辑的单元格,则可能只希望使用

JTable.setRowSelectionInterval
&选择下一个可用的单元格,否则
JTable.setRowSelectionInterval
可以调用
JTable.editCellAt(nextRow,nextCol)

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

另外,您可以将相同的想法应用于Enter键;)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440638.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号