Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在什么情况下,consume()恢复默认行为?_Java_Swing - Fatal编程技术网

Java 在什么情况下,consume()恢复默认行为?

Java 在什么情况下,consume()恢复默认行为?,java,swing,Java,Swing,将以下代码合并到一个简单的程序中时,当使用左/右箭头时,当处于编辑模式时,它会阻止光标在JTable的单元格内移动 public void keyPressed(KeyEvent e) { if ( (e.getKeyCode() == KeyEvent.VK_KP_LEFT) || (e.getKeyCode() == KeyEvent.VK_KP_RIGHT) || (e

将以下代码合并到一个简单的程序中时,当使用左/右箭头时,当处于编辑模式时,它会阻止光标在JTable的单元格内移动

        public void keyPressed(KeyEvent e) {  
            if ( (e.getKeyCode() == KeyEvent.VK_KP_LEFT) ||  (e.getKeyCode() == KeyEvent.VK_KP_RIGHT)  
                                    || (e.getKeyCode() == KeyEvent.VK_RIGHT) || (e.getKeyCode() == KeyEvent.VK_LEFT) )   
            {  
                //Do nothing  
                e.consume();  
            }  
        }             
    });   
使用上面相同的代码覆盖不同程序中的不同行为会产生意外的结果

在合并代码之前,当处于编辑模式时,左/右箭头键将移动到下一个单元格。合并上述代码后,恢复了默认行为,而不是像基本示例中那样禁用左/右键


由于无法提供示例,我想知道在什么情况下e.会使用恢复默认功能

在进一步挖掘和反编译第三方代码之后,行为更加清晰

主应用程序MyApp使用了JTable。 具有Inb JTable的单元格使用自定义单元格编辑器MyEditor

自定义单元格编辑器MyEditor使用第三方对象来编辑第三方PartyObj_1

第三方对象3rdParyObj_1扩展了另一个第三方对象3rdParyObj_2

第三方对象3rdParyObj_2扩展了JComponent

第三方对象3rdParyObj_2处理调用: processKeyEvent 以及电话: super.processKeyEvent

原始帖子中列出的代码放在MyEdit对象中

作为测试,我创建了自己的类my_JComponent和扩展JComponent。 方法是processKeyEvent,它不做任何事情。 当然,我本可以简单地把对super的电话评论掉,但这让我可以玩得更远

如果JComponent阻止调用processKeyEvent,则在编辑模式下光标键在字符之间移动时,所有操作都会按预期进行。基本上我甚至不需要上面的代码


它几乎显示为JComponent正在将箭头键作为选项卡键自动处理或作为默认处理

请添加一段简单但功能强大的代码,该代码提供了输入,代码的输出是什么,以及您期望的是什么。可能当组件使用首选API-1时,交叉发布:OP不会发布要求的SSCCE,密钥绑定已经提到,教程已经链接到。