gpt4 book ai didi

java - 调试 UI 并在按下某个键时暂停

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:28 25 4
gpt4 key购买 nike

我真的不是调试专家,最近我遇到了一个问题,希望有一个简单的解决方案。当我测试和调试 Mathematica plugin for IDEA ,我写了一些代码,构建它并在沙箱 IDEA 中运行它。

对于那些不熟悉为 IDEA 编写插件的人:主要问题是,所有的 UI 代码都已经存在,因为它是 IDEA 自带的。我的插件只实现了让 IDEA 理解 Mathematica 语言所需的特定接口(interface)。因此,不可能像@Jeroen 建议的那样在 onClickListener 中设置断点或扔东西,因为我几乎没有编写任何一行 UI 代码*。

现在我的情况是一切正常,但是当我取消特定操作时,会发生一些奇怪的事情。我不知道在我按 Esc 取消此操作时调用了哪个特定方法(这不是我的!)。当前点很可能深入到我拥有的并且可以使用调试器导航的 IDEA 源代码中!

问题:在我当前调试的 UI 程序中按 Esc 时,Java 中使调试器中断的最简单方法是什么?

*这不完全正确,但为了通用解决方案,我想这样想。

最佳答案

this question 中所述,您可以创建自己的子类 EventQueue它检查事件,并在代码中创建一个位置,您可以在其中设置断点并仅捕获某些类型的事件。它可能看起来像这样:

    EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
eventQueue.push(new EventQueue(){
public void postEvent(AWTEvent theEvent) {
if(theEvent instanceof KeyEvent){
KeyEvent kEvent = (KeyEvent)theEvent;
if(kEvent.getKeyCode() == KeyEvent.VK_ESCAPE){
System.out.println("escape pressed, set breakpoint here");
}
}
super.postEvent(theEvent);
}
});

然后,当您遇到该断点时,您可以进入 super.postEvent() 调用并查看它的去向、哪个组件接收它以及它们何时开始与某些组件交互你的代码的一部分。不过请注意,这可能是一个漫长的过程——AWT/Swing 事件调度可能会变得相当复杂。

关于java - 调试 UI 并在按下某个键时暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22290768/

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