Label

Надпись (Label) − это текстовый компонент, отображающий статический текст либо значение атрибута сущности.

XML-имя компонента: label.

Простой Label

Пример использования:

<label value="Simple label"/>

Атрибут value предназначен для задания текста надписи.

Текст, содержащийся в атрибуте value, будет разбит на несколько строк, если по длине он превысит значение атрибута width. Поэтому для отображения многострочной надписи, достаточно указать абсолютное значение атрибута width. Если текст надписи слишком длинный, а значение атрибута width не определено, то текст будет урезан.

<label value="Label, which should be split into multiple lines"
       width="200px"/>

Динамический Label

Параметры надписи можно задать в контроллере экрана. Для этого необходимо задать компоненту идентификатор, по которому получить ссылку на него в контроллере:

<label id="dynamicLabel"/>
@Autowired
private Label<String> dynamicLabel;

@Subscribe
protected void onInit(InitEvent event) {
    dynamicLabel.setValue("Some value");
}

Label, связанный с данными

Компонент Label может отображать значение атрибута сущности. Для этого используются атрибуты dataContainer и property. Например:

<data>
    <instance id="customerDc"
              class="ui.ex1.entity.Customer"/>
</data>
<layout>
        <label align="MIDDLE_CENTER"
               dataContainer="customerDc"
               property="firstName"/>
</layout>

В данном случае компонент отображает атрибут name сущности Customer, находящейся в контейнере данных customerDc.

HTML-контент

Атрибут htmlEnabled указывает, каким образом будет рассматриваться значение атрибута value: при htmlEnabled="true" – как HTML-код, иначе – как строка.

Атрибут htmlSanitizerEnabled разрешает или запрещает санитизацию HTML. Если атрибуты htmlEnabled и htmlSanitizerEnabled установлены в true, то значение атрибута value будет санитизировано.

@Autowired
private Label<String> htmlLabel;

private static final String UNSAFE_HTML = "<i>Jackdaws </i><u>love</u> " +
        "<font size=\"javascript:alert(1)\" " +
        "color=\"moccasin\">my</font> " +
        "<font size=\"7\">big</font> <sup>sphinx</sup> " +
        "<font face=\"Verdana\">of</font> <span style=\"background-color: " +
        "red;\">quartz</span><svg/onload=alert(\"XSS\")>";

@Subscribe
protected void onInit(InitEvent event) {
    htmlLabel.setHtmlEnabled(true);
    htmlLabel.setHtmlSanitizerEnabled(true);
    htmlLabel.setValue(UNSAFE_HTML);
}

Предопределенные стили

К компоненту Label можно применить предопределенные стилис помощью атрибута stylename или в XML-дескрипторе или контроллере экрана:

<label value="Colored label"
       stylename="colored"/>
@Autowired
private Label<String> styledLabel;

@Subscribe
protected void onInit(InitEvent event) {
    styledLabel.setStyleName("bold");
}
  • bold - жирный шрифт. Подходит для выделения важных текстовых элементов UI.

  • colored - цветной текст.

  • failure - стиль сообщения об ошибке. Добавляет рамку вокруг компонента и значок рядом с текстом. Используется как уведомление рядом с другим компонентом.

  • h1 - стиль основных заголовков приложения.

  • h2 - стиль заголовков разделов приложения.

  • h3 - стиль подзаголовков.

  • h4 - стиль подзаголовков.

  • light - облегченный шрифт. Подходит для выделения второстепенных текстовых элементов UI.

  • spinner - стиль спиннера. Используйте для пустых компонентов Label, чтобы создать спиннер.

  • success - стиль сообщения об успешном выполнении. Добавляет рамку вокруг компонента и значок рядом с текстом. Используется как уведомление рядом с другим компонентом.

События и слушатели

Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите компонент в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI.

В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана.

ContextHelpIconClickHandler

Formatter

Добавляет экземпляр formatter в компонент.

В приведенном ниже примере показано использование formatter для надписи formattedLabel1:

@Install(to = "formattedLabel", subject = "formatter")
protected String formattedLabelFormatter(String value) {
    return value.toUpperCase();
}

Чтобы добавить formatter программно, используйте метод компонента setFormatter().

ValueChangeEvent

XML-атрибуты Label

Просматривать и редактировать атрибуты, применимые к компоненту, можно с помощью панели инспектора Jmix UI в конструкторе экранов Studio.

XML-элементы Label