Класс Label предназначен для вывода текста, изображений, вертикальных или горизонтальных разделителей. Выводимый текст или изображение могут изменяться только программным путем. Экземпляр класса Label не получает фокус ввода при перемещении курсора например клавишей Tab или при кликании по нему мышкой.
Обработчики событий не применимы для данного класса, несмотря на то, что класс Label является наследником класса Control. Для создания экземпляра класса Label используется следующий конструктор:
public Label (Composite parent, int style)
Где parent – обязательный родительский компонент (контейнер), а style это один или несколько стилей определяющий параметры создания класса Label.
Рисунок 4.1. Label. Иерархия классов
Рисунок 4.2. Компонент Label. Изображение в визуальном редакторе
Стили формируют битовую маску по принципу логического «ИЛИ». Для объединения стилей используется символ "|".
Стиль | Описание | Примечание |
---|---|---|
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 одновременно может находиться только в одном из трех режимов работы:
Вывод текста;
Вывод изображения;
Вывод разделителя.
При необходимости выводить сразу и текст и изображение можно воспользоваться классом CLabel.
Для задания текста выводимого классом Label используется метод:
public void setText (String text)
Текст может содержать разделители и мнемоники. Символ & указывает, что следующий за ним символ будет рассматриваться как мнемоника. Когда пользователь набирает на клавиатуре комбинацию символов мнемоники, то родительский объект получает фокус. Для большинства платформ символы мнемоник выделяются подчеркиванием, но могут выделяться и другим способом, который зависит от платформы. Если необходимо вывести в тексте символ &, то его надо набрать два раза подряд.
Метод:
public String getText()
возвращает текст или пустую строку, если текст не задавался, или использовалась маска SWT.SEPARATOR для объекта Label.
Для задания изображения предназначен метод:
public void setImage(Image image)
Если image равно null , то изображение выводиться не будет.
Метод:
public Image getImage()
возвращает изображение или null (если изображение не установлено) объекта Label.
Если не установлен флаг разделителя SWT.SEPARATOR то будет изображен разделитель. Тип разделителя определяется значением маски SWT.HORIZONTAL для горизонтального разделителя и SWT.VERTICAL для вертикального разделителя. Выпуклость устанавливается одним из атрибутов SHADOW_IN, SHADOW_OUT и SHADOW_NONE. Разделители часто используются для формирования разделительных линий между компонентами.
Визуальный вид разделителя зависит от настроек операционной системы.
Если не установлен флаг разделителя 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) выравнивание игнорируется.
Если при создании объекта Label была указана маска SWT.WRAP, то текст будет разбиваться (переноситься) на строки для более полного заполнения разбиения доступного пространства. Действие маски SWT.WRAP определяется правилами переноса в операционной системе и зависят от выбранной локали.
Для формирования принудительного, вне зависимости от маски SWT.WRAP, переноса строки можно использовать символ перевода строки \n.
Пример 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); Label lblHello = new Label(shell, SWT.NONE); lblHello.setText("Simple Label"); new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL); shell.setLayout(new GridLayout()); Label lblDuke = new Label(shell, SWT.NONE); 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(); }
Разделители. |
|
Просто текст |
|
Label с изображением |
Рисунок 4.3. Результат работы программы