我一般在vaadin框架上有问题。
我创建了一个类来扩展vaadin应用程序(MyFirst),然后用vaadin可视设计器(MyFormApp)创建了一个自定义组件。
我确实实例化了自定义组件MyFormApp,并将其添加到MyFirst的主窗口中。
部署应用程序后,vaadin生成的页面未显示任何组件。
我的代码:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.example.vaadin; import com.vaadin.Application; import com.vaadin.ui.*; /** * * @author anis.bouchenafa */ public class MyFirst extends Application{ private Button newContact = new Button("Add contact"); private Button search = new Button("Search"); private Button share = new Button("Share"); private Button help = new Button("Help"); private HorizontalSplitPanel horizontalSplit = new HorizontalSplitPanel(); private TextField tf = new TextField(); @Override public void init() { //buildMainLayout(); MyFirstApp a = new MyFirstApp(); Window w = new Window("aness conf"); w.addComponent(a); setMainWindow(w); } }
我的第二堂课是MyFirstApp(自定义组件):
package com.example.vaadin; import com.vaadin.annotations.AutoGenerated; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.LoginForm; public class MyFirstApp extends CustomComponent { @AutoGenerated private AbsoluteLayout mainLayout; @AutoGenerated private LoginForm loginForm_2; /*- VaadinEditorProperties= {"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ /** * The constructor should first build the main layout, set the * composition root and then do any custom initialization. * * The constructor will not be automatically regenerated by the * visual editor. */ public MyFirstApp() { buildMainLayout(); setCompositionRoot(mainLayout); // TODO add user code here } @AutoGenerated private AbsoluteLayout buildMainLayout() { // common part: create layout mainLayout = new AbsoluteLayout(); mainLayout.setImmediate(false); mainLayout.setWidth("100%"); mainLayout.setHeight("100%"); // top-level component properties setWidth("100.0%"); setHeight("100.0%"); // loginForm_2 loginForm_2 = new LoginForm(); loginForm_2.setStyleName("v-loginform"); loginForm_2.setImmediate(false); loginForm_2.setWidth("340px"); loginForm_2.setHeight("-1px"); mainLayout.addComponent(loginForm_2, "top:160.0px;left:200.0px;"); return mainLayout; } }
在执行servlet之后,浏览器中没有任何显示。
好吧,您将buildMainLayout()称为视觉空白。它仅包含一个AbsoluteLayout和一个LoginForm(),其中没有任何组件。这就像生成无边界的HTML表,而不添加任何文本。
我认为您想添加您的组件
private Button newContact = new Button("Add contact"); private Button search = new Button("Search"); private Button share = new Button("Share"); private Button help = new Button("Help"); private HorizontalSplitPanel horizontalSplit = new HorizontalSplitPanel(); private TextField tf = new TextField();
应该
Vaadin手册中还详细解释了布局(以及其他基础知识):
瓦丹书: https : //vaadin.com/book/-//page/intro.html
Vaadin书-布局: 布局:https://vaadin.com/book/-//page/layout.html
Vaadin布局示例: http : //demo.vaadin.com/sampler#Layouts