Vaadin FormLayout没有居中对齐

时间:2018-03-08 21:06:08

标签: java layout vaadin vaadin8

我有一个包装Label和FormLayout的VerticalLayout。 VerticalLayout按默认为中心对齐其组件。标签按预期对齐居中。 FormLayout没有。

当我在调试视图中查看组件树时,FormLayout的宽度跨越VerticalLayout的整个宽度。但它的子(文本字段)与左边对齐,宽度较低(我认为是默认值)。

我的代码:

function uploadPics(images, label) {
        //console.log("Ok, going to upload "+images.length+" images.");
        var defs = [];

        images.forEach(function(i) {
            //console.log('processing '+i);
            var def = $.Deferred();

            function win(r) {
                if($.trim(r.response) === "0") {
                    console.error("this one failed");
                    def.resolve(0);
                } else {
                    def.resolve(1);
                }
            }

            function fail(error) {
                console.log("upload error source " + error.source);
                console.log("upload error target " + error.target);
                def.resolve(0);
            }

            var uri = encodeURI("http://websiter.com.br/mobile/receive.php");

            var options = {
                chunkedMode: false,
                fileKey: "file",
                fileName: label[i.substr(i.lastIndexOf('/')+1)],
                //mimeType: "image/jpeg",
                params: {
                    method: "photos"
                }
            };

            var ft = new FileTransfer();
            ft.upload(i, uri, win, fail, options);
            defs.push(def.promise());
        });

        $.when.apply($, defs).then(function() {
            console.dir(arguments);
        });

    }

我做错了什么,如何将FormLayout置于VerticalLayout的中心?

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案(虽然FormLayout似乎表现得很奇怪):

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

我无法做到的事情:我无法将FormLayout设置为全宽并将其子项对齐。