1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-thinking-in-java-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
13.7 标签.md 5.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 11.03.2025 09:15 d56454c

13.7 Лейблы

Лейблы работают правильно: поместите лейбл на форму. Это особенно важно для полей ввода (TextFields) и областей текста (Text areas), где нет лейблов. Если мы просто хотим поместить текстовое сообщение на форму, то это также применимо. Мы можем использовать метод drawString() внутри метода paint() для помещения текста в определённое место. Когда мы используем лейблы, они позволяют нам через управление расположением добавлять другие компоненты текста (мы вернёмся к этому позже).

Используя конструктор, мы можем создать лейбл с начальным текстом (это наш обычный подход), а также лейбл со выравниванием по центру (CENTER), слева (LEFT) и справа (RIGHT). Если мы забудем значения, можно получить их с помощью методов getText() и getAlignment(), а также изменить их с помощью методов setText() и setAlignment(). В следующем примере демонстрируются особенности лейблов:

//: Label1.java
// Использование лейблов
import java.awt.*;
import java.applet.*;

public class Label1 extends Applet {
  TextField t1 = new TextField("t1", 10);
  Label labl1 = new Label("TextField t1");
  Label labl2 = new Label("                   ");
  Label labl3 = new Label("                    ", Label.RIGHT);
  Button b1 = new Button("Test 1");
  Button b2 = new Button("Test 2");

  public void init() {
    add(labl1); add(t1);
    add(b1); add(labl2);
    add(b2); add(labl3);
  }
}
``````java
public class Example {

  public boolean action(Event evt, Object arg) {
    if (evt.target.equals(b1)) {
      labl2.setText("Текст установлен в лейбл");
    } else if (evt.target.equals(b2)) {
      if (labl3.getText().trim().length() == 0) {
        labl3.setText("labl3");
      }
      if (labl3.getAlignment() == Label.LEFT) {
        labl3.setAlignment(Label.CENTER);
      } else if (labl3.getAlignment() == Label.CENTER) {
        labl3.setAlignment(Label.RIGHT);
      } else if (labl3.getAlignment() == Label.RIGHT) {
        labl3.setAlignment(Label.LEFT);
      }
    } else {
      return super.action(evt, arg);
    }
    return true;
  }

}
///:~
## Начнем с наиболее типичного использования меток: помечивание текстового поля или области для ввода текста. Во втором примере, когда мы нажимаем кнопку `test 1`, строка пустых пробелов вставляется в поле с помощью метода `setText()`. Поскольку количество пустых пробелов не равно количеству символов (в пропорциональной шрифтовой семье), при вставке текста в метку мы видим, что часть текста будет отброшена. В третьем примере, когда мы первый раз нажимаем кнопку `test 2`, обнаруживаем, что метка пустая (метод `trim()` удаляет пробелы в конце каждой строки) и в начале левой колонки вставлена короткая метка. При последующих нажатиях кнопок мы можем наблюдать эффекты изменения. Мы можем полагать, что можем создать пустой тег и затем использовать `setText()` для внесения текста внутрь него. Однако мы не можем поместить текст внутрь пустого тега — вероятно, это связано с тем, что пустой тег не имеет ширину. Таким образом, создание пустого тега без текста бесполезно.
```В приведённом примере внутри тега `blank` содержится множество пробелов, поэтому он достаточно большой для помещения последующего текста.Аналогично, метод `setAlignment()` не оказывает влияния на типичный текстовый тег, созданный через конструктор. Ширина такого тега равна ширине текста, поэтому её нельзя как-либо отрегулировать. Однако если мы создаём длинный тег и затем укорачиваем его, то можно заметить эффект регулировки.

Эти ситуации, когда события происходят вместе с минимальной шириной, распознаются используемым по умолчанию менеджером компоновки. Часть, посвящённая менеджерам компоновки, представлена в конце данной главы.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-thinking-in-java-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-thinking-in-java-zh.git
oschina-mirror
wizardforcel-thinking-in-java-zh
wizardforcel-thinking-in-java-zh
master