Vaadin - 中心自定义组件

标签 vaadin vaadin7

使用 Grails 2.3.9 和 Vaadin 插件 7.3.9

class MyUI extends UI {

    @Override
    protected void init(VaadinRequest vaadinRequest) {
        VerticalLayout layout = new VerticalLayout()
        layout.setMargin(true)

        SignInForm signInForm = new SignInForm()

        layout.addComponent(signInForm)

        layout.setComponentAlignment(signInForm, Alignment.MIDDLE_CENTER)

        layout.setSizeFull()
        setContent(layout)

    }
}

自定义组件

class SignInForm extends CustomComponent {
    Panel p = new Panel()

    public SignInForm() {
        p.setSizeUndefined()

        Label label = new Label("test");
        p.setContent(label);

        setCompositionRoot(p);
    }
}

它是这样的:

enter image description here

如何让自定义组件水平居中?

最佳答案

将自定义组件放置在垂直布局中。将自定义组件的大小设置为未定义。设置垂直布局的大小并居中对齐。

public void init(VaadinRequest request) {

    VerticalLayout vLayout = new VerticalLayout();
    SignInComponent signInComponent = new SignInComponent();
    vLayout.addComponent(signInComponent);
    vLayout.setSizeFull();
    vLayout.setComponentAlignment(signInComponent, Alignment.MIDDLE_CENTER);
    this.setContent(vLayout);

class SignInComponent extends CustomComponent  {

    public SignInComponent() {
        Panel p = new Panel();
        p.setSizeUndefined();
        Label label = new Label("test");
        p.setContent(label);
        this.setSizeUndefined();
        this.setCompositionRoot(p);
    }
}

使用面板而不是自定义布局:

public void init(VaadinRequest request) {

    VerticalLayout vLayout = new VerticalLayout();
    SignInPanel signInPanel = new SignInPanel();
    vLayout.addComponent(signInPanel);
    vLayout.setSizeFull();
    vLayout.setComponentAlignment(signInPanel, Alignment.MIDDLE_CENTER);
    this.setContent(vLayout);

}

class SignInPanel extends Panel  {

    public SignInPanel() {
        this.setSizeUndefined();
        Label label = new Label("test");
        this.setContent(label);
    }
}

两者的代码输出: enter image description here

关于Vaadin - 中心自定义组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28559028/

相关文章:

java - 没有 Maven 的 Vaadin Clojure 小部件编译

java - AppLayout 中如何将 Component ranged right 添加到 Navbar?

java - 如何等待窗口的退出事件?

java - 未检测到自定义 SpringVaadinServlet

java - 当用户通过 Vaadin 7 应用程序中的 FieldGroup 和 BeanContainer 编辑 bean 时,bean 内部所做的数据更改会消失

maven - 在 Heroku 上部署 Vaadin 14 应用程序时出现问题

java - 当网格列值为空时如何显示默认值?

eclipse - vaadin 6 错误

java - 立即同步 Vaadin 中的两个表

java - 按下每个键时的 Vaadin TextField Action