BERDAFLEX Software Systems
Главная > Eclipse > Книги > Графическая java библиотека SWT

Label

Класс Label предназначен для вывода текста, изображений, вертикальных или горизонтальных разделителей. Выводимый текст или изображение могут изменяться только программным путем. Экземпляр класса Label не получает фокус ввода при перемещении курсора например клавишей Tab или при кликании по нему мышкой.

Обработчики событий не применимы для данного класса, несмотря на то, что класс Label является наследником класса Control. Для создания экземпляра класса Label используется следующий конструктор:

public Label (Composite parent, int style)

Где parent – обязательный родительский компонент (контейнер), а style это один или несколько стилей определяющий параметры создания класса Label.

Рисунок 4.1. Label. Иерархия классов

Label. Иерархия классов

Рисунок 4.2. Компонент Label. Изображение в визуальном редакторе

Компонент Label. Изображение в визуальном редакторе

1.1. Стили

Стили формируют битовую маску по принципу логического «ИЛИ». Для объединения стилей используется символ "|".

Стиль Описание Примечание
SWT.SEPARATOR Вывод разделителя По умолчанию устанавливается вертикальный разделитель
SWT.HORIZONTAL Вывод горизонтального разделителя Только один атрибут из SWT.HORIZONTAL и SWT.VERTICAL может быть выбран
SWT.VERTICAL Вывод вертикального разделителя
SWT.SHADOW_IN Вывод разделителя с эффектом выпуклости «внутрь» Только один атрибут из SHADOW_IN, SHADOW_OUT и SHADOW_NONE может быть выбран
SWT.SHADOW_OUT Вывод разделителя с эффектом выпуклости «наружу»
SWT.SHADOW_NONE Явное указание на отсутствие эффекта выпуклости
SWT.CENTER Выравнивание по центру Только один атрибут из CENTER, LEFT и RIGHT может быть выбран
SWT.LEFT Выравнивание влево
SWT.RIGHT Выравнивание вправо
SWT.WRAP Разбивать(переносить) текст, для более полного заполнения занимаемого пространства  

Label одновременно может находиться только в одном из трех режимов работы:

  1. Вывод текста;

  2. Вывод изображения;

  3. Вывод разделителя.

Замечание

При необходимости выводить сразу и текст и изображение можно воспользоваться классом CLabel.

1.2. Текст

Для задания текста выводимого классом Label используется метод:

public void setText (String text) 

Текст может содержать разделители и мнемоники. Символ & указывает, что следующий за ним символ будет рассматриваться как мнемоника. Когда пользователь набирает на клавиатуре комбинацию символов мнемоники, то родительский объект получает фокус. Для большинства платформ символы мнемоник выделяются подчеркиванием, но могут выделяться и другим способом, который зависит от платформы. Если необходимо вывести в тексте символ &, то его надо набрать два раза подряд.

Метод:

public String getText()

возвращает текст или пустую строку, если текст не задавался, или использовалась маска SWT.SEPARATOR для объекта Label.

1.3. Изображение

Для задания изображения предназначен метод:

public void setImage(Image image)

Если image равно null , то изображение выводиться не будет.

Метод:

public Image getImage()

возвращает изображение или null (если изображение не установлено) объекта Label.

1.4. Разделители

Если не установлен флаг разделителя SWT.SEPARATOR то будет изображен разделитель. Тип разделителя определяется значением маски SWT.HORIZONTAL для горизонтального разделителя и SWT.VERTICAL для вертикального разделителя. Выпуклость устанавливается одним из атрибутов SHADOW_IN, SHADOW_OUT и SHADOW_NONE. Разделители часто используются для формирования разделительных линий между компонентами.

Замечание

Визуальный вид разделителя зависит от настроек операционной системы.

1.5. Выравнивание

Если не установлен флаг разделителя SWT.SEPARATOR, то можно задать метод выравнивания текста или изображения объекта Label. Для этого служит метод:

public void setAlignment(int alignment)

Где аргумент alignment может принимать значения SWT.LEFT, SWT.RIGHT или SWT.CENTER для выравнивания по левому краю, правому краю или по центру соответственно.

Метод:

public int getAlignment()

возвращает метод выравнивания (SWT.LEFT, SWT.RIGHT или SWT.CENTER) текста или изображения объекта Label. Если не установлен флаг разделителя SWT.SEPARATOR, то возвращается значение SWT.NONE.

Замечание

Для разделителей (установлен флаг SWT.SEPARATOR) выравнивание игнорируется.

1.6. Перенос текста

Если при создании объекта Label была указана маска SWT.WRAP, то текст будет разбиваться (переноситься) на строки для более полного заполнения разбиения доступного пространства. Действие маски SWT.WRAP определяется правилами переноса в операционной системе и зависят от выбранной локали.

Замечание

Для формирования принудительного, вне зависимости от маски SWT.WRAP, переноса строки можно использовать символ перевода строки \n.

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

Пример 4.1. Пример использования класса Label с различными битовыми масками стилей

package by.bs.swt;
...
public void testLabel() {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Label test");
    new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);      (1)
    Label lblHello = new Label(shell, SWT.NONE);           (2)
    lblHello.setText("Simple Label");
    new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);      (1)
    shell.setLayout(new GridLayout());    
    Label lblDuke = new Label(shell, SWT.NONE);            (3)
    lblDuke.setImage(new Image(Display.getCurrent(), getClass()
                .getResourceAsStream("/by/bs/swt/images/duke_waving.gif")));
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
          display.sleep();
    }
    shell.dispose();
    display.dispose();
}
1

Разделители.

2

Просто текст

3

Label с изображением

 

Рисунок 4.3. Результат работы программы

Результат работы программы
Rambler's Top100 Рейтинг@Mail.ru