Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Vaadin FormLayout未居中对齐_Java_Layout_Vaadin_Vaadin8 - Fatal编程技术网

Java Vaadin FormLayout未居中对齐

Java Vaadin FormLayout未居中对齐,java,layout,vaadin,vaadin8,Java,Layout,Vaadin,Vaadin8,我有一个垂直布局,包装一个标签和一个表单布局。VerticalLayout根据默认设置将其构件居中对齐。标签按预期居中对齐。表单布局不正确 当我在调试视图中查看组件树时,FormLayout有一个宽度,跨越垂直布局的整个宽度。但是它的子项(文本字段)向左对齐,并且具有较低的宽度(我认为是默认值) 我的代码: @SpringView(name = RegisterView.VIEW_NAME) @DesignRoot public class RegisterView extends Vertic

我有一个垂直布局,包装一个标签和一个表单布局。VerticalLayout根据默认设置将其构件居中对齐。标签按预期居中对齐。表单布局不正确

当我在调试视图中查看组件树时,FormLayout有一个宽度,跨越垂直布局的整个宽度。但是它的子项(文本字段)向左对齐,并且具有较低的宽度(我认为是默认值)

我的代码:

@SpringView(name = RegisterView.VIEW_NAME)
@DesignRoot
public class RegisterView extends VerticalLayout implements View {

    protected static final String VIEW_NAME = "register";

    @PostConstruct
    void init() {
        setSizeFull();
        setDefaultComponentAlignment(Alignment.MIDDLE_CENTER);
        createUIComponents();
        setSpacing(true);
    }

    private void createUIComponents() {
        addComponent(new Label("HEADER"));
        addComponent(createRegistrationForm());
        addComponent(new Label("TEST"));
    }

    private FormLayout createRegistrationForm() {
        final FormLayout layout = new FormLayout();
        final TextField firstNameTextField = new TextField("firstName");
        final TextField lastnameTextField = new TextField("lastname");
        layout.addComponents(firstNameTextField, lastnameTextField);
        return layout;
}
我做错了什么,如何将FormLayout集中在垂直布局中?

我找到了一个解决方案(尽管FormLayout的行为似乎很奇怪):

我没有调用
setSizeFull()
而是调用
setSizeUndefine()
让FormLayout只包装其子组件所需的空间。这允许包装布局将FormLayout居中

我无法做到的是:我无法将FormLayout设置为全宽,并将其子项居中对齐。

我找到了一个解决方案(尽管FormLayout的行为似乎很奇怪):

我没有调用
setSizeFull()
而是调用
setSizeUndefine()
让FormLayout只包装其子组件所需的空间。这允许包装布局将FormLayout居中


我无法做到的是:我无法将FormLayout设置为全宽,并将其子项居中对齐。

我猜全尺寸将根据屏幕固定大小设置大小,但未定义将允许包装到父容器,可能,但是有时候vaadin很奇怪:D。我猜full size会根据屏幕固定的大小设置大小,但是undefined可能会允许包装到父容器,但有时候vaadin很奇怪:D。