2013-11-28 1 views
0

Я создал CustomComponent, и я хочу добавить этот CustomComponent в созданный WindowTemplate. Я решил создать WindowTemplate для всего окна моего проекта, но я все еще не могу добавить CustomComponent в окно шаблона.Добавить 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

Причина, по которой вы не видите никаких результатов, состоит в том, что все ваши компоненты имеют относительные размеры, и ни один из них не может зависеть. Таким образом, в конце концов все сжимается до одной точки.

В одном из решений может быть задан размер hLayout до полного, чтобы он занимал все пространство в окне, а затем определял размер вашего окна.

public WindowTemplate(String title, CustomComponent cc) { 
    super(title);  
    setWidth("200px"); 
    setHeight("200px"); 

    // ... 

    HorizontalLayout hLayout = new HorizontalLayout(); 
    hLayout.setSizeFull(); 

    // ... 
Смежные вопросы