GWT ui.xml-无法将DocklayoutPanel转换为自定义面板

GWT ui.xml-无法将DocklayoutPanel转换为自定义面板,gwt,uibinder,Gwt,Uibinder,所以问题是,我有一个CommonLayout小部件,它有自己的ui.xml public class MyLayout extends Composite implements IsWidget,MyLayoutIntf,AcceptsOneWidget { private static MyLayoutUiBinder uiBinder = GWT.create(MyLayoutUiBinder.class); private FaGuiI18nConstant faGui18Co

所以问题是,我有一个CommonLayout小部件,它有自己的ui.xml

public class MyLayout extends Composite implements IsWidget,MyLayoutIntf,AcceptsOneWidget {

  private static MyLayoutUiBinder uiBinder = GWT.create(MyLayoutUiBinder.class);

  private FaGuiI18nConstant faGui18Const = GWT.create(FaGuiI18nConstant.class);

  interface MyLayoutUiBinder extends UiBinder<Widget, MyLayout>{
  }

 @UiField
 FaSplitLayoutPanel centerPanel;

 @UiField
 Label applnTitle;

 @UiField
 Label loggedInUser;

 @UiField
 FaButton logoutButton;

 @UiField
 FaButton homeButton;

 Presenter presenter;

 public MyLayout(){
  initWidget(uiBinder.createAndBindUi(this));
  this.logoutButton.setButtonText(faGui18Const.logout());
  this.logoutButton.setVisible(false);
  this.homeButton.setButtonText(faGui18Const.home());
  this.homeButton.setVisible(false);
 }



 public SplitLayoutPanel getCenterPanel(){
  return centerPanel;
 }

 @Override
 public void setPresenter(Presenter presenter){
   this.presenter = presenter;
 }

 @Override
 public void setWidgetName(String widgetName){
  // TODO Auto-generated method stub
 }

 @Override
 public void setAppName(String appName){
   applnTitle.setText(appName);

 }

 @Override
 public void setUsername(String userName){
   loggedInUser.setText(userName);
 }

 @Override
 public void setWidget(IsWidget w){
  asWidgetOrNull(w);
 }

 @Override
 public FaButton getLogoutButton(){
  return this.logoutButton;
 }

 @Override
 public FaButton getHomeButton(){
   return this.homeButton;
 }
}
当我运行此命令时:它显示一个错误,表示无法将Docklayout转换为FaSplitlayout,并表示查看生成的代码。在生成的代码中,我找到了导致问题的行:

com.google.gwt.user.client.ui.Label f_Label4 = (com.google.gwt.user.client.ui.Label) GWT.create(com.google.gwt.user.client.ui.Label.class);
java.lang.String domId5 = com.google.gwt.dom.client.Document.get().createUniqueId();
com.google.gwt.user.client.ui.Label loggedInUser = (com.google.gwt.user.client.ui.Label) GWT.create(com.google.gwt.user.client.ui.Label.class);
com.google.gwt.user.client.ui.HTMLPanel f_HTMLPanel2 = new com.google.gwt.user.client.ui.HTMLPanel(template.html1("" + layoutStyle.logo() + "", "" + layoutStyle.applicationTitle() + "", domId0, domId1, "" + layoutStyle.user() + "", domId2, domId3, domId4, domId5).asString());
***com.amadeus.psp.fa.gui.common.client.view.FaSplitLayoutPanel centerPanel = new com.google.gwt.user.client.ui.DockLayoutPanel(com.google.gwt.dom.client.Style.Unit.PX);***
com.google.gwt.user.client.ui.HTMLPanel f_HTMLPanel5 = new com.google.gwt.user.client.ui.HTMLPanel(template.html2().asString());
com.google.gwt.user.client.ui.DockLayoutPanel f_DockLayoutPanel1 = new com.google.gwt.user.client.ui.DockLayoutPanel(com.google.gwt.dom.client.Style.Unit.PX);

这里可能有什么问题??有人能帮忙吗?

这是GWT中的一个bug。它应该在最近发布的2.5.0-rc1中修复。
请参见

谢谢您指出这一点。我想出了另一种方法,我不需要把扩展面板放到uiBinder上,它就成功了。
public class FaSplitLayoutPanel extends SplitLayoutPanel{
 public FaSplitLayoutPanel(){
 super();
}

 @Override
public void onResize(){
  if (this.getWidgetCount() == 3){
   final Widget splitterWidget = this.getWidget(1);
    if (this.getWidget(0).getOffsetWidth() >= 330){
    splitterWidget.removeStyleName(FaResources.INSTANCE.css().resizeCursor());
    splitterWidget.removeStyleName(FaResources.INSTANCE.css().resizeRightCursor());
    splitterWidget.addStyleName(FaResources.INSTANCE.css().resizeLeftCursor());

  } else if (this.getWidget(0).getOffsetWidth() == 0){
    splitterWidget.removeStyleName(FaResources.INSTANCE.css().resizeCursor());
    splitterWidget.removeStyleName(FaResources.INSTANCE.css().resizeLeftCursor());
    splitterWidget.addStyleName(FaResources.INSTANCE.css().resizeRightCursor());
  } else{
    splitterWidget.removeStyleName(FaResources.INSTANCE.css().resizeLeftCursor());
    splitterWidget.removeStyleName(FaResources.INSTANCE.css().resizeRightCursor());
    splitterWidget.addStyleName(FaResources.INSTANCE.css().resizeCursor());

  }
}
}
}
com.google.gwt.user.client.ui.Label f_Label4 = (com.google.gwt.user.client.ui.Label) GWT.create(com.google.gwt.user.client.ui.Label.class);
java.lang.String domId5 = com.google.gwt.dom.client.Document.get().createUniqueId();
com.google.gwt.user.client.ui.Label loggedInUser = (com.google.gwt.user.client.ui.Label) GWT.create(com.google.gwt.user.client.ui.Label.class);
com.google.gwt.user.client.ui.HTMLPanel f_HTMLPanel2 = new com.google.gwt.user.client.ui.HTMLPanel(template.html1("" + layoutStyle.logo() + "", "" + layoutStyle.applicationTitle() + "", domId0, domId1, "" + layoutStyle.user() + "", domId2, domId3, domId4, domId5).asString());
***com.amadeus.psp.fa.gui.common.client.view.FaSplitLayoutPanel centerPanel = new com.google.gwt.user.client.ui.DockLayoutPanel(com.google.gwt.dom.client.Style.Unit.PX);***
com.google.gwt.user.client.ui.HTMLPanel f_HTMLPanel5 = new com.google.gwt.user.client.ui.HTMLPanel(template.html2().asString());
com.google.gwt.user.client.ui.DockLayoutPanel f_DockLayoutPanel1 = new com.google.gwt.user.client.ui.DockLayoutPanel(com.google.gwt.dom.client.Style.Unit.PX);