这是带有大小设置的 UI 树:
HorizontalLayout(全尺寸)
FormLayout(大小未定义,展开比例:0)
- 字段 1(大小未定义)
- 字段 2(大小未定义)
- 字段 3(大小未定义)
面板(全尺寸,展开比例:1)
- 标签(宽度 100%,高度未定义)
我想要的是:
给FormLayout它需要的最小空间,剩下的空间应该被Panel占用。
发生了什么:
FormLayout 的宽度为 0(几乎不可见),而 Panel 占据了整个空间。
如果展开比率都为 1,则表单布局和面板似乎具有完全相同的宽度。
我做错了吗?如何获得它以使 FormLayout 保持其大小,并且只有 Panel 会水平增长?
编辑:
主视图类:
private HorizontalLayout layout;
private FormLayout formLayout;
private TextField title;
private Upload upload;
private ComboBox<String> charset;
private Button btnSubmit;
private TextViewer textViewer;
public TextUploadView() {
createTitle();
createUpload();
createBtnSubmit();
createCharset();
formLayout = new FormLayout(title, upload, charset, btnSubmit);
textViewer = new TextViewer();
layout = new HorizontalLayout(formLayout, textViewer);
layout.setSizeFull();
layout.setExpandRatio(formLayout, 0);
layout.setExpandRatio(textViewer, 1);
}
TextViewer 是其中带有标签的面板:
public class TextViewer extends Panel {
private static final long serialVersionUID = 1L;
private Label labelText;
public TextViewer() {
super();
labelText = new Label();
labelText.setWidth("100%");
labelText.setStyleName("largeTextDisplay");
super.setContent(labelText);
super.setSizeFull();
}
public void setText(String text) {
labelText.setValue(text);
}
}
我不认为标签上的 css 会导致任何问题,但它是这样的:
.mytheme .largeTextDisplay {
white-space: pre-wrap;
word-wrap: normal;
}