Иллюстрированный самоучитель по программированию мобильных телефонов

Класс TextField

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

public TextField(String label,
String text,
int maxSize, int constraints)

Параметры конструктора класса Text Field:

  • label – метка, название для редактируемого поля;
  • text – строка текста. Поле может и не содержать текст;
  • maxSize – максимальное количество символов в поле;
  • constraints – входное ограничение, с помощью которого можно задавать, что именно должно принимать данное поле, например цифры, буквы или символы, задается ограничение с помощью следующих констант:
  • static int ANY – можно вводить любой текст;
  • static int DECIMAL – можно вводить дробные числа;
  • static int EMAILADDR – используется для адреса электронной почты;
  • static int NUMERIC – для ввода только целого числа;
  • static int PASSWORD – используется при вводе пароля;
  • static int PHONENUMBER – для ввода телефонного номера;
  • static int URL – адрес сайта в Интернет.

Как видите, предусмотрены практически все варианты, остается только подставлять требуемые значения и наслаждаться простотой программирования под Java 2 ME. Использование вышеперечисленных директив в Java 2 ME традиционно и, например, для ввода адреса сайта может быть следующая запись:

TextField tf = new TextField("Адрес","",20,TextField.URL);

Методы класса TextField

Класс TextField содержит четырнадцать методов, некоторые из них мы сейчас рассмотрим.

  • void delete (int offset, int length) – удаляет текст или заданный символ;
  • int,getCaretPosition() – получает позицию каретки для печати символов;
  • int getChars (char [ ] data) – копирует текст в символьный массив данных;
  • int getMaxSize() – определяет максимально доступное количество символов для размещения в классе TextField;
  • String getString() – получает строку текста;
  • void insert (char [ ] data, int offset, int length, int position) – вставляет в заданную позицию массив символьных данных;
  • void insert (String src, int position) – вставляет в заданную позицию строку текста;
  • void setChars(char[ ] data, int offset, int length) – устанавливает из символьного массива данные в заданную позицию, при этом заменяя предыдущие данные;
  • int size ()- определяет размер содержимого в TextField на данный момент.

Теперь перейдем непосредственно к примеру, реализующему возможности класса TextField. Создадим пустую форму, и вставим в нее поля в виде адресной книги. В листинге 6.3 дается код всего примера.

Листинг 6.3. Класс TextField.

import javax.microedition.midlet.*;
-import javax.microedition.Icdui.*;
public class MainClassTextField extends MIDlet
implements CommandListenef
{
// команда выхода – из приложения
private Command exitMidlet = new
Command("Выход",Command.EXIT, 0);
// объект класса Form
private Form myform;
// объект mydigplay представляет экран телефона
private Display mydisplay;
public MainClassTextFieldf)
{
mydisplay = Display.getDisplay(this);
}
public void startApp()
{
// создаем форму при помощи объекта Form
myform = new Form("Класс TextField");
// добавить в форму поле для текста
myform.append(new TextField(
"Введите текст:","",20,TextField.ANY));
// добавить в форму поле для пароля
myform.append(new TextField(
"Введите пароль:","",20,TextField.PASSWORD));
// добавить в форму поле для e-mail
myform.append(new TextField(
"Введите E-mail:","",20,TextField.EMAILADDR));
// добавить в форму поле для URL
myform.append(new TextField(
"Введите URL:","",20,TextField.URL));
// добавить в форму поле для телефонного номера
myform.append(new TextField(
"Телефонный номер:","",20,TextField.PHONENUMBER));
myform.addCommand(exitMidlet);
myform.setCommandListener(this);
mydisplay.setCurrent(myform);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable d)
{
// выход из приложения
if(с = = exitMidlet)
{
destroyApp(false); notifyDestroyed();
}
}
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.