1

我的任务是在 Java/Swing 应用程序中实现新的最终用户功能。实施的任务相对容易和直接。麻烦的是要修改现有的应用程序。

它由几十个类组成,这些类经常突破 2000 行,有时甚至达到 10000 行。文档不存在,阅读所有源代码以了解它的大图是不可行的。

该应用程序本身基本上是一个用于绘制图表(例如流程图)的 GUI 工具,并且是开源的(如果有帮助,我可以发布指向源代码的链接)。

到目前为止,我已经设法将源代码导入 Eclipse 项目并使用 SwingExplorer 插件来识别一些 GUI 组件。

应用程序中最“有趣”的部分是绘制图表的画布。它被实现为一个继承自 JComponent 的类(大约 9700 行长)。在 SwingExplorer 中无法选择显示图表的部分:整个画布仅被识别为上述类的单个实例。因此,我猜测这个庞大的单个类负责处理图表的所有用户交互和 AWT 绘图操作,并仅返回某种图像缓冲区来显示(但这是一个巨大的猜测)。

我的修改涉及在画布上绘制图表时对图表进行计算。因此它将是一个新类,它将在创建图表的特定元素期间接收和处理广播的事件,然后对它们进行一些计算。

我的主要问题是:如何调试事件流?如何在绘制图表时遵循执行流程,查看生成、处理了哪些事件,并了解正在绘制的对象在内存中的位置?

我知道这个问题可能看起来太笼统了,但我真的一无所知,正在寻找一个起点。

提前感谢您花时间阅读;)问候,马可

4

1 回答 1

3

在 NetBeans 中,我使用File > New Project > Java Project with Existing Sources来允许轻松导航。大多数 IDE 都有类似的功能。

  • 使用Run > Generate Javadoc;即使没有注释,OverviewIndexUse链接Tree也可能有用。

  • 在调试器中设置断点并用于Window > Debugging > Call Stack回答诸如“我是如何到达这里的。

  • 以集成Profile > Profile Project模式运行代码,查看原理执行线程。

于 2012-10-07T17:11:57.857 回答