您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

在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.getEditingRowJTable.getEditingColumn方法来评估当前单元格(您还希望通过来检查表是否处于编辑模式JTable.isEditing,否则您需要使用JTable.getSelectedRowJTable.getSelectedColumn-实际上,您可能只是这样做而已,但是这就是我解决问题的方式)。

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

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

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

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

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

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

其他 2022/1/1 18:26:28 有454人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶