Читаем Java 7 полностью

Методы, унаследованные от JTextComponent, позволяют занести текст в поле ввода методом setText (String), получить весь текст методом getText(), часть текста методом getText(int offset, int length) или только выделенную часть текста методом

getSelectedText().

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

replaceSelection(String content).

По умолчанию текст в поле прижимается влево. Изменить это правило можно методом

setHorizontalAlignment (int), задав в нем одну из констант: LEFT, CENTER, RIGHT, LEADING, TRAILING класса JTextField.

По умолчанию текст в поле можно редактировать, но разрешается создавать поле только для чтения унаследованным методом setEditable ( false).

В поле можно установить новый курсор методом setCaret(Caret). Допускается просто изменять цвет курсора методом setCaretColor(Color). Позицию курсора можно отследить методом getCaretPosition(), а задать программно — методом setCaretPosition (int). Переместить курсор программно, выделив таким способом участок текста, можно методом moveCaretPosition (int).

Границы выделенного участка возвращают методы getSelectionStart ( ) и getSelectionEnd ( ), а устанавливают — методы setSelectionStart (int) и setSelectionEnd (int).

Цвет выделенного текста можно задать методом setSelectedTextColor (Color), а цвет фона выделенного текста — методом setSelectionColor(Color).

Работу с системным буфером обмена (clipboard) обеспечивают методы cut (), copy (), отправляющие в буфер выделенный участок текста, и метод paste(), вставляющий в поле содержимое буфера.

Итак, основные действия с полем ввода легко выполняются без обращения к модели данных — документу, виду или редактору. Для более сложных действий надо получить ссылку на документ методом getDocument ( ).

В листинге 12.1 приведен пример текстового поля для ввода одних только цифр.

Листинг 12.1. Поле ввода цифр

import java.awt.*; import javax.swing.*; import javax.swing.text.*;

public class NumberText extends JFrame{

JTextField tf = new JTextField(5);

JLabel l = new JLabel(,,Вводите цифры:");

NumberText(){ super("text");

setLayout(new FlowLayout());

// Вставляем фильтр вводимых символов ((PlainDocument)tf.getDocument()).

setDocumentFilter(new NumberFilter());

// Текст будет выделяться только красным цветом tf.setSelectedTextColor(Color.red);

// При выделении текста фон останется белым tf.setSelectionColor(Color.white);

// Курсор будет красным tf.setCaretColor(Color.red); l.setLabelFor(tf);

add(l); add(tf);

setSize(400, 400);

setDefaultCloseOperation(EXIT ON CLOSE); setVisible(true);

}

public static void main(String[] args){ new NumberText();

}

// Фильтр вводимых данных class NumberFilter extends DocumentFilter{

// Переопределяем только один метод public void insertString(FilterBypass fb, int pos,

String text, AttributeSet attr) throws BadLocationException{

try{

Integer.parseInt(text); // Введена цифра? }catch(Exception e){

// Если не цифра, то символ не вводим super.insertString(fb, 0, "", attr); return;

}

// Если введена цифра, то заносим ее в поле super.insertString(fb, pos, text, attr);

}

}

}

Поле ввода пароля JPasswordField

Класс JPasswordField непосредственно расширяет класс JTextField, значит, к нему относится все сказанное ранее. Одно отличие заключается в том, что в этом поле вместо вводимых символов повторяется один символ, по умолчанию — звездочка. Звездочку можно заменить другим символом с помощью метода setEchoChar(char).

Второе отличие заключается в том, что вместо метода getText () для получения текста из поля пароля используется метод getPassword( ), возвращающий массив символов типа char [], а не строку.

<p><strong>Редактор объектов <emphasis>JFormattedTextField</emphasis></strong></p>

Еще одно расширение класса JTextField- класс JFormattedTextField- предназначено

для работы с объектами, содержащими символы, такими как Date, Number. Впрочем, конструктор класса JFormattedTextField(Object) и метод setValue(Object) позволяют включить в редактор любой объект, при этом в окно редактирования будет выведен результат преобразования этого объекта в текстовую строку.

Типичное применение редактора:

JFormattedTextField ftf = new JFormattedTextField(new Date()); ftf.addActionListener(this);

// . . . . . . . .

// Редактируем дату... Потом нажимаем клавишу

// . . . . . . . .

public void actionPerformed(ActionEvent e){ newDate = (Date)ftf.getValue();

}

Метод getValue() возвращает объект типа Object, полученный в результате обратного преобразования отредактированной в окне строки в первоначальный объект.

Преобразованием объекта в строку и обратно занимается вложенный в JFormattedTextField абстрактный класс AbstractFormatter. Для этого в нем есть методы

valueToString(Object) и stringToValue(String). Эти методы оставлены абстрактными. После их определения следует установить полученный "преобразователь" в редактор методом install (JFormattedTextField) класса AbstractFormatter или воспользоваться конструктором

JFormattedTextField(JFormattedTextField.AbstractFormatter);

Перейти на страницу:

Все книги серии В подлиннике

Java 7
Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Ильдар Шаукатович Хабибуллин

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных