我的SWT浏览器出了问题。我使用的是Mac OS X Yosemite。 浏览器深深地位于复合层次结构中。即,shell表示复合A,复合A表示复合B,复合B表示复合C,浏览器放在复合C中。我为浏览器添加了位置监听器和进度监听器。
GridDataFactory,GridLayoutFactory来自org.eclipse.jface.layout包。
Composite compositeC= new Composite(compositeB, SWT.BORDER);
GridLayoutFactory.fillDefaults().numColumns(1).applyTo(compositeC);
GridDataFactory.fillDefaults().grab(true, true).applyTo(compositeC);
Browser browser = new Browser(compositeC, SWT.None);
GridDataFactory.fillDefaults().grab(true, true).applyTo(browser);
browser.addLocationListener(new LocationListener() {
@Override
public void changing(LocationEvent event) {
}
@Override
public void changed(LocationEvent event) {
}
});
browser.addListener(SWT.Resize, new Listener() {
@Override
public void handleEvent(Event e) {
}
});
browser.addProgressListener(new ProgressListener() {
@Override
public void completed(ProgressEvent event) {
browser.layout(true, true);
}
@Override
public void changed(ProgressEvent event) {
}
});
browser.setUrl("http://eclipse.org");
compositeC.layout(true);
compositeC.redraw();
但是在我调整Shell大小之前,浏览器中加载的页面是不可见的。我尝试在Progress Listener的completed()方法中重绘shell。但似乎没有任何效果。
相同的代码在Windows中运行得非常好。我在这里做错了什么,或者在MAC上呈现的Webkit存在一些问题。