我创建了一个CustomComponent,我想在创建的WindowTemplate中添加这个CustomComponent。我解决了为我项目的所有Window创建一个WindowTemplate,但我仍然无法在模板窗口中添加CustomComponent。
我正在尝试这个。
/** WindowTemplate for all Window configs app */
public class WindowTemplate extends Window{
public WindowTemplate(String title, CustomComponent cc){
super(title);
setSizeUndefined();
setModal(true);
setClosable(false);
setDraggable(false);
setResizable(false);
setIcon(new ThemeResource("../icons/ibg_icon.png"));
HorizontalLayout hLayout = new HorizontalLayout();
hLayout.addComponent(cc);
setContent(hLayout);
center();
}
}
/** my customcomponent */
public class CadCur extends CustomComponent {
private AbsoluteLayout mainLayout;
private TextField email;
public CadCur() {
buildMainLayout();
setCompositionRoot(mainLayout);
}
@AutoGenerated
private AbsoluteLayout buildMainLayout() {
mainLayout = new AbsoluteLayout();
mainLayout.setImmediate(false);
mainLayout.setWidth("100%");
mainLayout.setHeight("100%");
// top-level component properties
setWidth("100.0%");
setHeight("100.0%");
// email
email = new TextField();
email.setCaption("Email");
email.setImmediate(false);
email.setWidth("50.0%");
email.setHeight("-1px");
email.setRequired(true);
mainLayout.addComponent(email, "top:96.0px;left:43.0px;");
return mainLayout;
}
}
/** a UI class */
public class PrincipalUI extends UI{
@Override
protected void init(VaadinRequest request) {
getCurrent().addWindow(new WindowTemplate("MyWindow", new CadCur());
}
}
怎么做?
感谢。
答案 0 :(得分:0)
您没有看到任何结果的原因是因为您的所有组件都具有相对大小,并且没有任何组件可以依赖。所以最终一切都被压扁到一点。
其中一个解决方案可能是将hLayout的大小设置为full,以便它占据窗口中的所有空间,然后定义窗口的大小。
public WindowTemplate(String title, CustomComponent cc) {
super(title);
setWidth("200px");
setHeight("200px");
// ...
HorizontalLayout hLayout = new HorizontalLayout();
hLayout.setSizeFull();
// ...