Читаем 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 [], а не строку.

Редактор объектов JFormattedTextField


Еще одно расширение класса 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.

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

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

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

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

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