Jas*_*n S 5 java debugging swing event-dispatch-thread
我SwingUtilities.invokeLater()经常使用.但是,这样做会使某些情况下的调试变得困难:您无法看到调用的代码的堆栈跟踪SwingUtilities.invokeLater(),因为该代码已经结束了它的执行.
在调用时是否有关于如何设置某种上下文(仅用于调试目的)的建议SwingUtilities.invokeLater(),以便您可以找出导致相关UI事件的原因?
重写该方法,添加一个 Log 调用,然后调用真正的调用...警告:您必须将所有调用替换为原始方法。
您甚至可以包装可运行对象并添加上下文编号(例如稍后调用的调用的时间戳)。当可运行程序启动时,它开始打印上下文编号
public static void myInvokeLater(final Runnable runnable) {
long ts = System.currentTimeMillis();
Log.info("call to invoke later, context :" + ts);
Runnable r = new Runnable() {
public void run() {
Log.info("start runnable of invokeLater with context :" + ts);
runnable.run();
}
};
SwingUtilities.invokeLater(r);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |