我的 ScrollingGraphicalViewer
显示在 ViewPart 中。但是,如果包含的图表大于 ViewPart,则会出现滚动条,并且无法看到整个图表。相反,我想缩小直到无需滚动即可看到整个图表。
我已经尝试调用viewer.zoomTo(Rectangle)
,但显然,该方法尚未实现。还有其他方法可以实现这一目标吗?
我仍然需要滚动功能,因此我必须使用 ScrollingGraphicalViewer
。第一次打开 ViewPart 时,应按上述方式调整缩放。
最佳答案
尝试将 GEF LayoutListener 安装到图表中,覆盖您的内容 editpart 的 #createFigure() 方法(例如,DiagramEditPart#createFigure()。 类似这样的事情:
protected IFigure createFigure() {
IFigure f = super.createFigure();
f.addLayoutListener(new LayoutListener.Stub(IFigure container) {
public void postLayout() {
Rectangle diagramBounds = new PrecisionRectangle(container.getBounds());
container.translateToAbsolute(diagramBounds);
/*
* Do the scale factor calculation based on you viewport/control size
*/
ZoomManager zoomManager = (ZoomManager)DiuagramEditPart.this.getViewer().getProperty(ZoomManager.class.toString());
if (zoomManager != null) {
zoomManager.setScale(scaleFactor);
}
}
});
return f;
}
关于java - 如何获得 GEF GraphicalViewer 以适合其所在的 View /编辑器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24612674/