我只是想通过公共方法将子代动态添加到父代。如果我canvasContainer.add(Canvas.createIfSupported())
从构造函数内部调用,它会按预期工作,但从insertLayerAt()
方法内部,它会默默地失败,而不是附加到 DOM。
我尝试使用不同的面板作为父元素,使用不同的小部件作为子元素,但问题仍然存在。
我接近这个错误吗?我找不到任何说我不应该从构造函数外部使用 add 方法的东西,但是我可能又错过了比这更简单的东西。
我的代码如下,我使用的是 GWT 2.4 和 MVP4G
public class CanvasView extends Composite implements
CanvasPresenter.ICanvasView {
LayoutPanel canvasContainer;
@Inject
public CanvasView()
{
Document document = Document.getInstance();
Dimension d = document.getDimension();
canvasContainer = new LayoutPanel();
canvasContainer.setPixelSize(d.width, d.height);
canvasContainer.setStyleName("CanvasController");
initWidget(canvasContainer);
}
public void insertLayerAt(int zpos, Layer layer)
{
Canvas canvas = Canvas.createIfSupported();
if (canvas != null)
{
GWT.log("Canvas is supported.", null);
canvasContainer.add(canvas);
}else{
GWT.log("Canvas isn't supported.", null);
}
}
}