Docs

Documentation versions (currently viewingVaadin 24)
Documentation translations (currently viewingChinese)

此页面是从官方文档 http://vaadin.com/docs 机器翻译而来。可能包含错误、不准确或错误陈述。Vaadin 不保证翻译的准确性、可靠性或实时性。

创建一个包含多个元素的组件

使用多个HTML元素创建组件。

本节演示如何使用[classname]Element API和多个DOM元素,创建一个支持标签(label)的`TextField`组件。

示例:组件的DOM结构。

Source code
HTML
<div>
    <label></label>
    <input>
</div>

示例:带有`<input>`和`<label>`元素的`TextField`组件

Source code
Java
@Tag("div")
public class TextField extends Component {

    Element labelElement = new Element("label");
    Element inputElement = new Element("input");

    public TextField() {
        inputElement
            .addPropertyChangeListener("value", "change", e -> {});
        getElement()
            .appendChild(labelElement, inputElement);
    }

}
  • DOM结构通过在`@Tag`注解中标记根元素为`<div>`创建。

  • 标签(label)和输入(input)元素被追加到根元素中。

  • 借助输入元素设置`value`属性的同步。

请参阅使用Element API创建简单组件以了解另一种同步方式。

添加API

为了使组件使用更方便,您可以添加一个用于设置输入框数值和标签文本的API。

示例:添加一个用于获取和设置输入框与标签内容的API。

Source code
Java
  public String getLabel() {
      return labelElement.getText();
  }

  public String getValue() {
      return inputElement.getProperty("value");
  }

  public void setLabel(String label) {
      labelElement.setText(label);
  }

  public void setValue(String value) {
    inputElement.setProperty("value", value);
  }

AF6AD086-B42A-43BF-9013-48ED5FCB2FD8