我目前正在开发一个用Shehell搜索所有SWT显示器的Mehtod:
/**
* retrieves all display objects of all threads which have shells
*
* @return list of displays
*/
public static ArrayList getAllDisplays(){
Display display = null;
ArrayList<Display> retVal = new ArrayList<Display> ();
for(Thread t : Thread.getAllStackTraces().keySet()){
logger.info ("currentThread set to: " + t);
if (t != null) {
logger.info ("currentThread is not null");
display = Display.findDisplay(t);
logger.debug ("display: " + display);
if(display!=null) {
boolean b = hasShells(display) ;
logger.debug("b: " + b);
if( b ){
logger.debug("found a display with shells ! ");
retVal.add(display);
}
}
}
logger.info ("Next Thread");
}
return retVal;
}
现在我尝试使用此方法处理SWT应用程序,但Display.findDisplay(t);
始终返回null。
有可能没有一个线程是UI线程吗?我是否会错过Display.findDisplay(t);
的一些帖子?
谢谢!