Java Vaadin:带有表单[文本字段标题和所需指示器]的自定义布局
我们正在开发一些表单,但在Vaadin表单中使用CustomLayout。我们在HTML中使用了字段标签,希望抑制TextField标题。还希望在文本字段的左侧设置必需属性 图形设计师和开发人员之间的任务是分离的,所以自定义布局对我们来说很方便,所以我们现在不能使用任何其他布局 目前,我的测试屏幕如下所示,[在表单中仅添加了两个用于自定义布局的字段] 正如您所看到的,“hello”标题位于文本框的顶部,我想将其完全删除。此标题仅用于说明,否则我将其设为空,但表中仍有空格。我还想使所需的指标与文本框对齐 我做了一个Form Field工厂,尝试了很多选择,但没有成功 如果需要任何特定的CSS更改,请明确告诉我如何添加,因为我是CSS新手。基于之前对论坛的讨论,我在我的文本栏中添加了以下风格,但没有成功Java Vaadin:带有表单[文本字段标题和所需指示器]的自定义布局,java,vaadin,Java,Vaadin,我们正在开发一些表单,但在Vaadin表单中使用CustomLayout。我们在HTML中使用了字段标签,希望抑制TextField标题。还希望在文本字段的左侧设置必需属性 图形设计师和开发人员之间的任务是分离的,所以自定义布局对我们来说很方便,所以我们现在不能使用任何其他布局 目前,我的测试屏幕如下所示,[在表单中仅添加了两个用于自定义布局的字段] 正如您所看到的,“hello”标题位于文本框的顶部,我想将其完全删除。此标题仅用于说明,否则我将其设为空,但表中仍有空格。我还想使所需的指标与文本
myLabel.setStyleName("inline");
以及使用CSS:
.inline, .inline div { display: inline; }
[我的案例我正在将其添加到TextField对象中}“还希望在文本字段的左侧设置必需属性”如果希望将字段设置为必需,则应为其属性设置setRequired(true)
如果要手动处理表单中的所有元素位置,应执行以下操作:
public class YourFormextends Form{
private YourForm() {
setImmediate(true);
setValidationVisible(false);
setValidationVisibleOnCommit(false);
setValidationVisible(false);
setValidationVisibleOnCommit(false);
setWriteThrough(false);
VerticalLayout formLayout = createFormLayout();
setLayout(formLayout);
setFormFieldFactory(yourFormFieldFactory());
}
public static VerticalLayout createFormLayout() {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
final VerticalLayout formErrorLayout = new VerticalLayout();
final VerticalLayout formFieldLayout = formFieldLayout();
layout.addComponent(formErrorLayout, CREATE_FORM_ERROR_LAYOUT_INDEX);
layout.addComponent(formFieldLayout, CREATE_FORM_FIELD_LAYOUT_INDEX);
return layout;
}
private static VerticalLayout formFieldLayout() {
VerticalLayout rootLayout = new VerticalLayout();
rootLayout.setSpacing(true);
rootLayout.setMargin(false, false, true, false);
GridLayout layout = new GridLayout();
layout.setRows(1);
layout.setColumns(3);
rootLayout.addComponent(layout);
return rootLayout;
}
private FormFieldFactory activityFormFieldFactory() {
FormFieldFactory factory = new FormFieldFactory() {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
@Override
public Field createField(Item item, Object propertyId, Component uiContext) {
String fieldName = (String) propertyId;
if (fieldName.equals(FIELD_NAME_HELLO)) {
if (EDIT_MODE) {
TextField textField = new TextField(FIELD_NAME_HELLO);
textField.setRequired(true);
return textField;
}
}
}
}
@Override
protected void attachField(Object propertyId, Field field) {
String fieldName = (String) propertyId;
VerticalLayout formFieldLayout = getFormFieldLayout();
if (fieldName.equals(FIELD_NAME_HELLO)) {
GridLayout layout = (GridLayout) formFieldLayout.getComponent(0);
layout.addComponent(fieldCaption, 0, 0);
layout.addComponent(field, 1, 0);
layout.addComponent(fieldDescription, 2, 0);
}
}
}
}
你好,库拉姆,我也有同样的问题。你找到解决办法了吗?