Vaadin:带表格的自定义布局[文字字幕标题和所需指标]

时间:2011-05-31 15:32:29

标签: java vaadin

我们正在开发一些Form,但在Vaadin Forms中使用CustomLayout。我们在HTML中使用了Label of Field并希望禁止TextField Caption。还想在文本字段的左侧创建必需的属性。

图形设计师和开发人员之间存在任务分离,因此自定义布局对我们来说很方便,所以我们现在不能使用任何其他布局。

目前我的测试屏幕如下,[仅在表格中添加了两个字段用于自定义布局] 正如您所看到的那样,“hello”标题是Text Box的顶部,我想完全删除它。这个标题仅用于说明目的,否则我将其设为空,但表中仍有空格。另外,我想让所需的指标与文本框对齐。

我做了一个Form Field工厂并尝试了很多选择,但没有运气。

如果需要进行任何特定的CSS更改,请清楚告诉我如何添加它,因为我是CSS新手。基于之前对论坛的讨论,我在TextField中添加了以下样式而没有任何成功,

myLabel.setStyleName("inline");

并使用CSS:

.inline, .inline div { display: inline; }

enter image description here [我的情况是我将它添加到TextField对象}

1 个答案:

答案 0 :(得分:3)

“还想在文本字段的左侧创建必需的属性”如果你想要make field,你应该为它设置属性.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);
        }
}
}


}