gpt4 book ai didi

java - processKeyEvent 中 Swing 中的堆栈溢出

转载 作者:行者123 更新时间:2023-12-02 00:53:37 24 4
gpt4 key购买 nike

我正在解决一个我不太明白的错误。我有一个Java类,我们称之为DownloadTable源自JDTable 。这些类中的每一个都实现 KeyListener

我想要基类 JDTable处理一些击键,所以我输入 this.AddListener(this)在其构造函数中并创建一个 key 处理程序

public void keyPressed(KeyEvent e) {...}

然后我想要派生类 DownloadTable自己做一些特殊的键盘处理,所以我重复这个过程并在那里添加键盘处理程序。我还添加了对 super.processKeyEvent() 的调用从派生类的键处理程序将派生处理程序和基处理程序连接在一起。

问题是它没有按预期工作,每当 super.ProcessKeyEvent 时我都会收到堆栈溢出异常。叫做。当在调试器中运行时,甚至不会调用父级的事件处理程序。我错过了一些明显的东西吗?不是 super.processKeyEvent()以某种方式调用父类(super class)'keyPressed()处理程序?谢谢。

附加堆栈:

Exception in thread "AWT-EventQueue-1" java.lang.StackOverflowError at jd.gui.swing.jdgui.views.downloadview.DownloadTable.keyPressed(DownloadTable.java:253) at java.awt.Component.processKeyEvent(Unknown Source) at javax.swing.JComponent.processKeyEvent(Unknown Source) at jd.gui.swing.jdgui.views.downloadview.DownloadTable.keyPressed(DownloadTable.java:253) at java.awt.Component.processKeyEvent(Unknown Source) at javax.swing.JComponent.processKeyEvent(Unknown Source) at jd.gui.swing.jdgui.views.downloadview.DownloadTable.keyPressed(DownloadTable.java:253) at java.awt.Component.processKeyEvent(Unknown Source)

最佳答案

processKeyEvent() 调用注册的监听器来传播按键事件时,监听器不应回调 processKeyEvent() ,否则结果将是无限递归,如您所见看到了。

您添加通话的原因是什么?当你删除它时,有什么东西不起作用吗?

关于java - processKeyEvent 中 Swing 中的堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1893874/

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