Класс 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(); } } }