zoukankan      html  css  js  c++  java
  • LookupListener中的resultChanged方法是在EDT中执行么?

    下面是LookupListener接口的定义

    package org.openide.util;

    import java.util.*;


    /** General listener for changes in lookup.
     *
     * 
    @author  Jaroslav Tulach
     
    */
    public interface LookupListener extends EventListener {
        /** A change in lookup occured. Please note that this method
         * should never block since it might be called from lookup implementation
         * internal threads. If you block here you are in risk that the thread
         * you wait for might in turn to wait for the lookup internal thread to
         * finish its work.
         * 
    @param ev event describing the change
         
    */
        public void resultChanged(LookupEvent ev);
    }

     TopComponent实现了LookupListener接口,并注册为result = Utilities.actionsGlobalContext().lookupResult(XXX.class)的监听器

    问题:TopComponent覆盖的resultChanged是否在EDT中执行。

    1 尝试在resultChanged中输出当前线程名:Thread[AWT-EventQueue-0,6,IDE Main]

    2 在这篇教程中http://platform.netbeans.org/tutorials/nbm-selection-1.html,其resultChanged方法中直接调用了修改JLabel对象文本的方法,如下

        @Override
        public void resultChanged(LookupEvent lookupEvent) {
            Lookup.Result r = (Lookup.Result) lookupEvent.getSource();
            Collection c = r.allInstances();
            if (!c.isEmpty()) {
                APIObject o = (APIObject) c.iterator().next();
                jLabel1.setText (Integer.toString(o.getIndex()));
                jLabel2.setText (o.getDate().toString());
            } else {
                jLabel1.setText("[no selection]");
                jLabel2.setText ("");
            }
        }

     总结:resultChanged很可能直接在EDT中执行,但尚未找到明确的说明。

  • 相关阅读:
    Go语言基础之切片
    Go语言基础之map
    Go语言基础之函数
    Go语言基础之指针
    Go语言基础之结构体
    Redis缓存失效策略
    redis 的过期策略都有哪些?内存淘汰机制都有哪些?
    关于redis的主从、哨兵、集群
    Redis的 RDB和 AOF持久化的区别
    为什么做分布式使用 Redis
  • 原文地址:https://www.cnblogs.com/cuizhf/p/2223092.html
Copyright © 2011-2022 走看看