Happy3w

如何快速调试Java应用界面UI,如何在运行时查看界面代码

2016.12.20
环境:eclipse+swing程序 问题: 界面控件一层一层叠加嵌套,一个普通的窗口(界面)包含了从公司自己开发的应用底层平台一直到业务应用开发的各种code,穿越了N个版本,跨越了N个部门,当你突然接到一个关于某控件联动显示不正确,过滤不正确,值校验不正确,或者调用其他服务不正确等等问题时,是不是感觉特别蒙,不知如何入手? 1、你甚至不知道主界面的类在哪。 2、你找不到这个控件在哪,你不知道这个控件如何加载到这个界面。 3、你不知道这个控件触发了哪些listener。 4、你不知道这控件的值什么时候发生了变化,或者他的值发生变化产生什么样的效果。 一般的解决办法: 查看系统运行日志,但一般系统日志只能帮助你解决第一个问题即找到主界加载类,剩下的就得单步调试了,你会花费大量的时间弄清楚剩下的3个问题以便确定用户所遇到的最终问题。 这实在是太痛苦了,难道只能这样摸着石头过河吗?有没有一个工具根据当前运行的界面就看到后面的类、控件、事件、属性等信息呢? 经过一番搜寻找到几个方案. 调试界面的工具: 1、Oracel的JDeveloper下的Swing UI Debugger 官网介绍:http://www.oracle.com/technetwork/developer-tools/jdev/ui-debuger-087839.html 说明:看起来应该不错,但不是Eclipse的,用JDeveloper,试了下JDeveloper安装网速太慢还没装好,目前着急解Bug以后再试用。 2、Swing Inspector(eclipse用,简单界面可用,复杂界面放弃) 官网介绍:http://www.swinginspector.com/index_en.html 说明:Eclipse用,也可以直接监视applet。 试用感受:满怀期待,经过一番试用,这款只对界面加载过程有一些作用,控件、事件等的处理和交互基本很难找到有用的信息。简单的界面还行,复杂的界面信息没法看了,一层一层嵌套找有用的信息比单步调试还困难,简单demo例子还行,复杂应用不推荐。 3、Visual Debugger(netbeans) 官网介绍:https://netbeans.org/kb/docs/java/debug-visual.html