【问题标题】:Swing and SWT event auto loggerSwing 和 SWT 事件自动记录器
【发布时间】:2014-04-02 20:18:35
【问题描述】:

我们的桌面应用程序有很多用例。并且通常很难重现缺陷并指定如何重现它的所有步骤。

是否可以为所有 Swing 和 SWT 事件创建类似 Interceptor 的东西,并将它们记录到控制台,而无需将 log.info 放入每个 actionListener() 或视图激活器、菜单贡献者等?

【问题讨论】:

    标签: java eclipse swing swt rcp


    【解决方案1】:

    也许你可以这样做。

    public class MyEventQueue extends EventQueue {
    
        private static final Logger logger = Logger.getLogger( MyEventQueue.class.getName() );
        @Override
        protected void dispatchEvent( AWTEvent newEvent )
        {
            try {
                 logger.info("New Event start: "+ newEvent.toString() );
                 super.dispatchEvent( newEvent );
            } catch( RuntimeException  e ) {
                //log uncatch exceptions in edt
                logger.error(e.getCause(),e);            
                JOptionPane.showMessageDialog( null, "someDescriptiveMessage");
            }
        }
    }
    

    您可以在应用程序启动之前使用辅助方法来设置它。

     public static void captureUncaughtExceptionInEvent(){            
                EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue();
                queue.push(new MyEventQueue());
     }
    

    【讨论】:

    • 这将记录所有事件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2010-09-21
    • 2016-07-12
    • 2011-03-12
    相关资源
    最近更新 更多