Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Используя Компоненты Swing
Раздел: Как Использовать Различные Компоненты
Как Использовать Текстовые поля
Домашняя страница > Создание GUI С JFC/Swing > Используя Компоненты Swing

Как Использовать Текстовые поля

Текстовое поле является основным текстовым управлением, которое позволяет пользователю ввести небольшое количество текста. Когда пользователь указывает, что ввод текста полон (обычно нажатием, Входят), текстовое поле запускает событие действия. Если Вы должны получить больше чем одну строку ввода от пользователя, используйте текстовую область.

API Swing обеспечивает несколько классов для компонентов, которые являются или вариантами текстовых полей или которые включают текстовые поля.

JTextField Что покрывает этот раздел: основные текстовые поля.
JFormattedTextField A JTextField подкласс, который позволяет Вам определять юридический набор символов, которые может ввести пользователь. См., Как Использовать Отформатированные Текстовые поля.
JPasswordField A JTextField подкласс, который не показывает символы, что пользователь вводит. См., Как Использовать Поля Пароля.
JComboBox Может быть отредактирован, и обеспечивает меню строк, чтобы выбрать из. См., Как Использовать Поля комбинированного списка.
JSpinner Комбинирует отформатированное текстовое поле с несколькими маленькими кнопками, которое позволяет пользователю выбрать предыдущее или следующее доступное значение. См., Как Использовать Прядильщиков.

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

Снимок TextDemo

Нажмите кнопку Launch, чтобы работать, TextDemo, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.

Запускает приложение TextDemo

Можно найти весь код для этой программы в TextDemo.java. Следующий код создает и устанавливает текстовое поле:

textField = new JTextField(20);

Целочисленный параметр, который передают к JTextField конструктор, 20 в примере, указывает на число столбцов в поле. Это число используется наряду с метриками, обеспеченными текущим шрифтом поля, чтобы вычислить привилегированный width поля. Это не ограничивает число символов, которые может ввести пользователь. Чтобы сделать это, можно или использовать отформатированное текстовое поле или слушателя документа, как описано в текстовых Компонентных Функциях.


Отметьте: 

Мы поощряем Вас определять число столбцов для каждого текстового поля. Если Вы не определяете число столбцов или привилегированного размера, то привилегированный размер поля изменяется всякий раз, когда текст изменяется, который может привести к нежелательным обновлениям расположения.


Следующая строка кодовых регистров a TextDemo возразите как слушатель действия для текстового поля.

textField.addActionListener(this);

actionPerformed метод обрабатывает события действия от текстового поля:

private final static String newline = "\n";
...
public void actionPerformed(ActionEvent evt) {
    String text = textField.getText();
    textArea.append(text + newline);
    textField.selectAll();
}

Заметьте использование JTextField's getText метод, чтобы получить текст, в настоящий момент содержавший текстовым полем. Текст, возвращенный этим методом, не включает символ новой строки для клавиши Enter, которая запустила событие действия.

Вы видели, как может использоваться основное текстовое поле. Поскольку JTextField class наследовался от JTextComponent class, текстовые поля очень гибки и могут быть настроены почти любой способ, которым Вам нравится. Например, можно добавить слушателя документа или фильтр документа, который будет уведомлен, когда текст изменяется, и в случае фильтра можно изменить текстовое поле соответственно. Информация о текстовых компонентах может быть найдена в текстовых Компонентных Функциях. Прежде, чем настроить a JTextField, однако, удостоверьтесь, что один из других компонентов, основанных на текстовых полях, не будет делать задания для Вас.

Часто текстовые поля соединяются с метками, которые описывают текстовые поля. См. Примеры Что Текстовые поля Использования для указателей при создании этих пар.

Другой Пример: TextFieldDemo

TextFieldDemo пример представляет текстовое поле и текстовую область. Можно найти весь код для этой программы в TextFieldDemo.java.

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

Снимок TextFieldDemo

Нажмите кнопку Launch ro, работает, TextFieldDemo, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.

Запускает Приложение TextFieldDemo

Чтобы выделить текст, этот пример использует маркер и живописца. Код ниже создает и устанавливает маркер и живописца для текстовой области.

final Highlighter hilit;
final Highlighter.HighlightPainter painter;
...
hilit = new DefaultHighlighter();
painter = new DefaultHighlighter.DefaultHighlightPainter(HILIT_COLOR);
textArea.setHighlighter(hilit);

Этот код добавляет слушателя документа документа текстового поля.

entry.getDocument().addDocumentListener(this);

Слушатель документа insertUpdate и removeUpdate методы вызывают search метод, который не только выполняет поиск в выделение дескрипторов, но также и текстовой области. Следующий код выделяет найденный текст, устанавливает каре до конца найденного соответствия, устанавливает фон значения по умолчанию для текстового поля, и выводит на экран сообщение в строке состояния.

hilit.addHighlight(index, end, painter);
textArea.setCaretPosition(end);
entry.setBackground(entryBg);
message("'" + s + "' found. Press ESC to end search");

Строка состояния является a JLabel объект. Код ниже шоу, как message метод реализуется.

private JLabel status;
...
void message(String msg) {
    status.setText(msg);
}

Если там не идет ни в какое сравнение в текстовой области, следующий код изменяет фон текстового поля на розовый и выводит на экран надлежащее информационное сообщение.

entry.setBackground(ERROR_COLOR);
message("'" + s + "' not found. Press ESC to start a new search");

CancelAction class ответственен за обработку Клавиши выхода следующим образом.

   class CancelAction extends AbstractAction {
       public void actionPerformed(ActionEvent ev) {
               hilit.removeAllHighlights();
               entry.setText("");
               entry.setBackground(entryBg);
           }
   }

API Текстового поля

Следующие таблицы приводят обычно используемый JTextField конструкторы и методы. Другие методы, которые Вы, вероятно, вызовете, определяются в JTextComponent class. Обратитесь к текстовому Компонентному API.

Вы могли бы также вызвать методы на текстовое поле, наследованное от других предков текстового поля, такой как setPreferredSize, setForeground, setBackground, setFont, и так далее. См. Класс JComponent для таблиц обычно используемых наследованных методов.

API для того, чтобы использовать текстовые поля попадает в эти категории:

Установка или Получение Содержания Поля
Метод или Конструктор Цель
JTextField ()
JTextField (Строка)
JTextField (Строка, интервал)
JTextField (интервал)
Создает текстовое поле. Когда существующий, int параметр определяет требуемый width в столбцах. String параметр содержит начальный текст поля.
освободите setText (Строка)
Представьте getText в виде строки ()
(определенный в JTextComponent)
Наборы или получают текст, выведенный на экран текстовым полем.
Точная настройка Появление Поля
Метод Цель
освободите (булев) setEditable
булев isEditable ()
(определенный в JTextComponent)
Наборы или указывают, может ли пользователь отредактировать текст в текстовом поле.
освободите setColumns (интервал);
интервал getColumns ()
Наборы или получают число столбцов, выведенных на экран текстовым полем. Это - действительно только подсказка для того, чтобы вычислить привилегированный width поля.
освободите setHorizontalAlignment (интервал);
интервал getHorizontalAlignment ()
Наборы или получают, как текст выровненный горизонтально в пределах его области. Можно использовать JTextField.LEADING, JTextField.CENTER, и JTextField.TRAILING для параметров.
Реализация Функциональности Поля
Метод Цель
освободите addActionListener (ActionListener)
освободите removeActionListener (ActionListener)
Добавляет или удаляет слушателя действия.
освободите selectAll ()
(определенный в JTextComponent)
Выбирает все символы в текстовом поле.

Примеры То Использование Текстовые поля

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

Пример Где Описано Примечания
TextDemo Этот раздел Приложение, которое использует основное текстовое поле со слушателем действия.
TextFieldDemo Этот раздел Приложение, которое использует текстовое поле и текстовую область. Поиск делается в текстовой области найти запись от текстового поля.
DialogDemo Как Сделать Диалоговые окна CustomDialog.java включает текстовое поле, значение которого проверяется. Можно перевести диалоговое окно в рабочее состояние, щелкая по вкладке More Dialogs, выбирая Проверяющую ввода диалоговую опцию, и затем щелкая по Шоу это! кнопка.
TextSamplerDemo Используя текстовые Компоненты Размечает пар текстового поля метки, используя a GridBagLayout и метод удобства:
addLabelTextRows(JLabel[] labels,
                 JTextField[] textFields,
                 GridBagLayout gridbag,
                 Container container)
TextInputDemo Как Использовать Отформатированные Текстовые поля Размечает пар текстового поля метки, используя a SpringLayout и a SpringUtilities метод удобства:
makeCompactGrid(Container parent,
                int rows, int cols,
                int initialX, int initialY,
                int xPad, int yPad)

Если Вы программируете в JavaFX, см. Текстовое поле.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Как Использовать Текстовые области
Следующая страница: Как Использовать Панели инструментов